www.pudn.com > MyClient.rar > MyClient.java


 
import java.io.*; 
 
import javax.swing.*; 
 
import java.awt.*; 
import java.net.*; 
import java.util.*; 
import java.awt.event.*; 
public class MyClient extends JFrame{ 
   JTextArea Msgjta,MsgLogjta; 
   JScrollPane Msgjsp,MsgLogjsp,UserListjsp; 
   JButton send,cancel,Setname,FileSend; 
   JLabel Msglab,MsgLoglab,UserListlab,Targetlab; 
   JPanel panel1,panel2,panel3; 
   java.awt.List UserList; 
   JRadioButton Unicast,P2P; 
   JPanel panel21,panel22,panel23,panel23button; 
   JTextField Namejtf; 
   JFileChooser jfilechooser; 
   String File_send = ""; 
   String File_save = ""; 
 
   BufferedReader in; 
   PrintWriter outMessage; 
   Socket socket; 
   String inMessage = ""; 
   String Username = ""; 
   String Oldname = ""; 
   String OtherUser = ""; 
   String Myname= ""; 
   MyClient(){ 
	  jfilechooser = new JFileChooser(new File(".")); 
      panel1 = new JPanel(); 
      panel2 = new JPanel(); 
      panel3 = new JPanel(); 
       
	  setLayout(new BorderLayout(10,10)); 
      getContentPane().add(panel1,BorderLayout.WEST); 
      getContentPane().add(panel2,BorderLayout.CENTER); 
      getContentPane().add(panel3,BorderLayout.SOUTH); 
 
	  panel1.setLayout(new BorderLayout(10,10)); 
	  UserListlab = new JLabel("Client List"); 
	  UserList = new java.awt.List(10,false); 
	  UserListjsp = new JScrollPane(UserList,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
      panel1.add(UserListlab,BorderLayout.NORTH); 
	  panel1.add(UserListjsp,BorderLayout.CENTER); 
 
	  panel21 = new JPanel(); 
	  panel21.setLayout(new BorderLayout(10,10)); 
	  Targetlab = new JLabel("Input your Name under(only one time):"); 
	  Namejtf = new JTextField(); 
	  panel21.add(Targetlab,BorderLayout.NORTH); 
	  panel21.add(Namejtf,BorderLayout.CENTER); 
 
      panel22 = new JPanel(); 
	  panel22.setLayout(new FlowLayout(FlowLayout.LEFT,5,10)); 
	  Msglab = new JLabel("Message"); 
	  Unicast = new JRadioButton("Unicast"); 
      Unicast.setSelected(true); 
	  P2P = new JRadioButton("P2P"); 
	  ButtonGroup group = new ButtonGroup(); 
	  group.add(Unicast); 
	  group.add(P2P); 
	  Setname = new JButton("Setname"); 
	  FileSend = new JButton("FileSend"); 
      panel22.add(Msglab); 
	  panel22.add(Unicast); 
	  panel22.add(P2P); 
	  panel22.add(Setname); 
	  panel22.add(FileSend); 
	 
 
	  panel23button = new JPanel(); 
      panel23button.setLayout(new FlowLayout(FlowLayout.CENTER,5,10)); 
	  send = new JButton("send"); 
	  cancel = new JButton("cancel"); 
	  panel23button.add(send); 
	  panel23button.add(cancel); 
 
	  panel23 = new JPanel(); 
	  panel23.setLayout(new BorderLayout(10,10)); 
	  Msgjta = new JTextArea(5,60); 
      Msgjsp = new JScrollPane(Msgjta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
	  panel23.add(panel22,BorderLayout.NORTH); 
	  panel23.add(Msgjsp,BorderLayout.CENTER); 
	  panel23.add(panel23button,BorderLayout.SOUTH); 
      
	  panel2.setLayout(new BorderLayout(10,10)); 
	  panel2.add(panel21,BorderLayout.NORTH); 
	  panel2.add(panel23,BorderLayout.CENTER); 
 
	  panel3.setLayout(new BorderLayout()); 
      MsgLogjta = new JTextArea(10,60); 
      MsgLogjta.setEditable(false); 
      MsgLoglab = new JLabel("Message Log"); 
      MsgLogjsp = new JScrollPane(MsgLogjta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
      panel3.add(MsgLoglab,BorderLayout.NORTH); 
      panel3.add(MsgLogjsp,BorderLayout.CENTER); 
	 
	  setTitle("Client"); 
      pack(); 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setVisible(true); 
 
	  ButtonListener sendMessage = new ButtonListener(); 
	  send.addActionListener(sendMessage); 
 
	  Name_ButtonListener setname = new Name_ButtonListener(); 
	  Setname.addActionListener(setname); 
	   
	  Filesend_ButtonListener filesend = new Filesend_ButtonListener(); 
	  FileSend.addActionListener(filesend); 
	   
      try{ 
		  socket = new Socket("127.0.0.1",8000); 
		  in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
          outMessage = new PrintWriter(socket.getOutputStream()); 
      
		  while(true){ 
		     inMessage = in.readLine().trim(); 
			 if(inMessage.indexOf("系统提示:") != -1 && inMessage.indexOf("在线") != -1){ 
				OtherUser = inMessage.substring(5,inMessage.indexOf("在")); 
                UserList.add(OtherUser); 
			 } 
			 else if(inMessage.indexOf("系统提示:") != -1 && inMessage.indexOf("来了") != -1){ 
	            Oldname = inMessage.substring(5,inMessage.indexOf("来")); 
                UserList.add(Oldname); 
             } 
             else if(inMessage.indexOf("系统提示:") != -1 && inMessage.indexOf("下线了") != -1){ 
				OtherUser = inMessage.substring(5,inMessage.indexOf("下")); 
				UserList.remove(OtherUser); 
			 } 
			 else if(inMessage.indexOf("系统提示:") != -1 && inMessage.indexOf("改名为") != -1){ 
				Oldname = inMessage.substring(5,inMessage.indexOf("改")); 
				Username = inMessage.substring(9+Oldname.length(),inMessage.length()-1); 
				UserList.remove(Oldname); 
				UserList.add(Username); 
				Oldname = Username; 
             } 
			 else if(inMessage.indexOf("系统提示:") != -1 && inMessage.indexOf("发文件") != -1){ 
			    File_save = inMessage.substring(inMessage.indexOf("件")-1,inMessage.length()-inMessage.indexOf("件")); 
			     
			 } 
			 else if(inMessage.indexOf("系统提示:") != -1 && inMessage.indexOf("拒绝接受") != -1){ 
				 MsgLogjta.append(new Date()+ inMessage); 
			 } 
			 if(inMessage.indexOf("系统提示:") != -1 && inMessage.indexOf("发文件") != -1){ 
	   		     MsgLogjta.append(new Date()+ " " + "系统提示:" + inMessage.indexOf(5,inMessage.indexOf("对"))+"对你发送文件,请接收!"+ "\n"); 
	   			 SaveFile(); 
	   	     } 
			 else 
				 MsgLogjta.append(new Date()+ " " + inMessage + "\n"); 
		  } 
      }catch(IOException ex){ 
          System.out.println("^^^"+ex); 
	  } 
   } 
	//信息发送 
    class ButtonListener implements ActionListener{ 
		String who = ""; 
		public void actionPerformed(ActionEvent e){ 
		    if(Unicast.isSelected()){ 
				boolean is_public = true; 
				for(int i=0;i