⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientapplet.java

📁 java的聊天室代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				buttonBack.addActionListener(this);
				buttonSend.addActionListener(this);
			}
		
			public void actionPerformed(ActionEvent e)
			{
	
				Object te=new Object();
				te=e.getSource();
												
				if(te==buttonInput)//talk to customer
				{
					String TalkTextSend=textInput.getText();
					Message tempTalkMessage=new Message();
					if(TalkTextSend.equals(""))
					{
						temp.warmShowMessage.showMessageDialog(temp.talkPane,"Couldn't send EmptyMessage!","MessageWarning",JOptionPane.WARNING_MESSAGE);
						return;
					}
					if(temp.talkPaneControlPORP.toAllCustmoer.isSelected())
					{				
						tempTalkMessage.choiceWay=2;
						tempTalkMessage.talkMessage=temp.ClientAppletName+"对大家说:"+TalkTextSend+"。";
					}
					if(temp.talkPaneControlPORP.personalTalkButton.isSelected())
					{
						tempTalkMessage.choiceWay=5;	//peasonal talk
						tempTalkMessage.personalName=temp.personalCustName;
						tempTalkMessage.customerName=temp.ClientAppletName;
						tempTalkMessage.talkMessage=TalkTextSend;
						String lugPersonal=temp.ClientAppletName+"对"+temp.personalCustName+"说"+TalkTextSend+"。"+"\n";
						temp.talkPaneTalkAreaCenter.textTalkAreaPersonal.append(lugPersonal);
					}
										
					if(temp.talkPaneControlPORP.toSomeOne.isSelected())
					{
						tempTalkMessage.choiceWay=2;							//public talk
						tempTalkMessage.talkMessage=temp.ClientAppletName+"对"+temp.personalCustName+"说"+TalkTextSend+"。";
					}
					try
					{
						
						ObjectOutputStream buttonInputMessageToServer=new ObjectOutputStream(temp.toServer.getOutputStream());
						buttonInputMessageToServer.writeObject(tempTalkMessage);
					}
					catch(SocketException t)
					{
						System.out.print("Couldn't Send TalkMessage to Server!"+t);
					}
					catch(IOException t)
					{
						System.out.print(t+"Couldn't Send TalkMessage to Server!");
					}
					textInput.setText("");
				
				}
		
				if(te==buttonBack)
				{
					///////leave chatRoon////////////
					tempMessage.choiceWay=3;
					tempMessage.customerName=temp.ClientAppletName;
					tempMessage.talkMessage=temp.ClientAppletName+"离开了聊天室";
					
					try
					{
						ObjectOutputStream buttonExitMessageToServer=new ObjectOutputStream(temp.toServer.getOutputStream());
						buttonExitMessageToServer.writeObject(tempMessage);
					}
					catch(IOException a)
					{
						System.out.print("no send buttonExit"+a);
					}
					temp.cardObj.first(temp.mainPane);
				}
				
				if(te==buttonClearPublic)
				{
					temp.talkPaneTalkAreaCenter.textTalkAreaPublic.setText("");
				}
				
				if(te==buttonClearPersonal)
				{
					temp.talkPaneTalkAreaCenter.textTalkAreaPersonal.setText("");
				}
				
				if(te==buttonSend)
				{
					//////////file send/////////////
					if (temp.personalCustName=="")
					{
							JOptionPane.showMessageDialog(this,"Please select a person to send File!!!");							
						return;
					}
						
					FileOpenBean fOpen=new FileOpenBean(temp);
					fOpen.showFileDialog();
					String nameSen=(temp.getFileName()).substring((temp.getFileName()).lastIndexOf("\\")+1,(temp.getFileName()).length());
					temp.FILENAME=nameSen;
					FileSender send=new FileSender(temp);
					try
					{
						ObjectOutputStream fileToServer=new ObjectOutputStream(temp.toServer.getOutputStream());
						FileData fd=new FileData();
						
							fd.setData(send.getFileData(),temp.personalCustName);
							fileToServer.writeObject(fd);
						
					}
					catch(FileNotFoundException err)
					{
						err.printStackTrace();
					}
					catch(Exception a)
					{
						System.out.print("no send buttonExit"+a);
					}
					
				
   				}
			}
}


/////////TalkPaneControl/////////
class TalkPaneControl extends JPanel
{
		
		public TalkPaneControl()
		{
		
			setLayout(new GridLayout(2,1));
		
		}
}


////////mian TalkPane////////
class TalkPane extends JPanel
{
	public TalkPane()
	{
		setLayout(new BorderLayout());
	}
}


///////////main Class///////////
public class ClientApplet extends JFrame 
{
	String ClientAppletName;
	String FILENAME;
	String SAVEFILENAME;
	String personalCustName="";
	Vector nameListFromServer;
	String fileName="";
	JPanel mainPane;
	Socket toServer;
	CardLayout cardObj;
	JOptionPane warmShowMessage;
	
	/////////every panel built///////////
	TalkPaneControlPORP talkPaneControlPORP;
	LoginPane loginPane;
	TalkPane talkPane;
	TalkPaneControl talkPaneControl;
	TalkPaneControlButton talkPaneControlButton;
	TalkPaneTalkArea talkPaneTalkArea;
	TalkPaneTalkAreaList talkPaneTalkAreaList;
	TalkPaneTalkAreaCenter talkPaneTalkAreaCenter;
	
		
	public ClientApplet()
	{
		super("Client");
		setSize(800,300);
		
		warmShowMessage=new JOptionPane();
		try
		{
			toServer=new Socket("127.0.0.1",2003);
		}
		catch(IOException s)
		{
			System.out.print(s+"Couldn't Start Server!");
		}
		
		cardObj=new CardLayout();
		mainPane=new JPanel();
		nameListFromServer=new Vector(1,1);
		
		talkPaneControlPORP=new TalkPaneControlPORP(this);
		loginPane=new LoginPane(this);
	 	talkPane=new TalkPane();
	 	talkPaneControl=new TalkPaneControl();
		talkPaneControlButton=new TalkPaneControlButton(this);
	  	talkPaneTalkArea=new TalkPaneTalkArea();
	 	talkPaneTalkAreaList=new TalkPaneTalkAreaList(this);
	 	talkPaneTalkAreaCenter=new TalkPaneTalkAreaCenter();
	 		 			
		mainPane.setLayout(cardObj);
		getContentPane().add(mainPane);
		
		mainPane.add("loginPane",loginPane);
		mainPane.add("talkPane",talkPane);
		
		talkPane.add("Center",talkPaneTalkArea);
		talkPane.add("South",talkPaneControl);	
		
		talkPaneTalkArea.add("Center",talkPaneTalkAreaCenter);
		talkPaneTalkArea.add("East",talkPaneTalkAreaList);
		
		/////////windows Event/////////////
		this.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				Message tempMessage=new Message();
				talkPaneTalkAreaCenter.textTalkAreaPersonal.setText("");
				talkPaneTalkAreaCenter.textTalkAreaPublic.setText("");
				tempMessage.choiceWay=3;
				tempMessage.customerName=ClientAppletName;
				tempMessage.talkMessage=ClientAppletName+"离开了聊天室";
				
				try
				{
					ObjectOutputStream buttonExitMessageToServer=new ObjectOutputStream(toServer.getOutputStream());
					buttonExitMessageToServer.writeObject((Message)tempMessage);
				}
				catch(IOException a)
				{
					System.out.print("no send buttonExit"+a);
				}
				dispose();
				System.exit(0);
				
			}
		});
		
		JPanel a=new JPanel();
		a.setBackground(new Color(0,80,80));
		a.add(talkPaneControlButton);
		talkPaneControl.add(a);	
		talkPaneControl.add(talkPaneControlPORP);
		show();
	}
	public void setCusName(String str)
	{
		talkPaneControlPORP.setCustomerName(str);
	}
	public void setFileName(String fName)
	{
		fileName=fName;
	}
	public String getFileName()
	{
		return fileName;
	}
	
	/////////mianWay go go///////////
	public static void main(String a[])
	{
		ClientApplet tt=new ClientApplet();
		MiniChat mChat=new MiniChat(tt);
	}
}


///////listen from server//////////
class MiniChat extends Thread
{
	ClientApplet tt;
	protected Socket netChatMainFrameSocket;
	protected ObjectInputStream fromServer;
	protected RandomAccessFile fswriter;
	
	
	public MiniChat(ClientApplet frmObj)
	{
		tt=frmObj;
		netChatMainFrameSocket=frmObj.toServer;
		start();
	}
	public void run()
	{
			
		try
		{
		
			for(;;)
			{	
				fromServer=new ObjectInputStream(netChatMainFrameSocket.getInputStream());
		
				sleep(5);
				Object obj=fromServer.readObject();
				if (obj instanceof Message)
				{
					Message tempMessage=(Message)obj;
					if(tempMessage==null)
					break;
					
					String LugFormServer=tempMessage.talkMessage;
									
					switch(tempMessage.choiceWay)
					{
						////////////listen name//////////
						case 1:
								tt.talkPaneTalkAreaList.nameList.removeAll();
								tt.talkPaneTalkAreaList.nameList.setListData(tempMessage.nameListMessage);
								break;
						///////////listen talk//////////		
						case 2:
								if(!(tempMessage.talkMessage.equals("")))
								{
									tt.talkPaneTalkAreaCenter.textTalkAreaPublic.append(LugFormServer+"\n");			
									tt.talkPaneTalkAreaCenter.setPosPublic();
								}
								break;
						///////////listen edit name//////////		
						case 3:
								tt.talkPaneTalkAreaList.nameList.removeAll();
								tt.talkPaneTalkAreaList.nameList.setListData(tempMessage.nameListMessage);
								break;
						///////////listen name test//////////		
						case 4:
									break;
						///////////listen personal talk//////////		
						case 5:
								if(!(tempMessage.talkMessage.equals("")))
								{
									tt.talkPaneTalkAreaCenter.textTalkAreaPersonal.append(tempMessage.talkMessage+"\n");
									tt.talkPaneTalkAreaCenter.setPosPersonal();
								}
								break;
						case 6:
								tt.nameListFromServer=tempMessage.nameListMessage;
								System.out.println(tt.nameListFromServer.size());
								break;
						case 7:
								tt.warmShowMessage.showMessageDialog(tt.talkPaneTalkAreaCenter,"Server is closed","ContactWarning",JOptionPane.WARNING_MESSAGE);
								break;
					}
				}
				else
				{
					//////////list file take///////////
					FileSaveBean fSave=new FileSaveBean(tt);
					fSave.showFileDialog();
					FileData fd=(FileData)obj;
					fswriter=new RandomAccessFile( tt.SAVEFILENAME,"rw");
					fswriter.write(fd.b);
				}
			}
		}
		catch(IOException err)
		{
			err.printStackTrace();
			System.out.println("...");
		}
		catch(Exception err)
		{
			tt.warmShowMessage.showMessageDialog(tt.loginPane,"Server Not Strat","Startwarning",JOptionPane.WARNING_MESSAGE);
		}
	}
}

//////////FileOpenBean class/////////
class FileOpenBean
{
	ClientApplet cApp;
	private JFileChooser chooser;
	public FileOpenBean(ClientApplet ca)
	{
		cApp=ca;
		chooser=new JFileChooser();
		chooser.setCurrentDirectory(new File("."));		
	}
	public void showFileDialog()
	{
		int r =chooser.showOpenDialog(null);
		if(r==JFileChooser.APPROVE_OPTION )
		{
			String fName=chooser.getSelectedFile().getAbsolutePath();
			cApp.setFileName(fName);			
		}
	}
}
//////////FileSaveBean class/////////
class FileSaveBean
{
	ClientApplet cApp;
	private JFileChooser chooser;
	public FileSaveBean(ClientApplet ca)
	{
		cApp=ca;
		chooser=new JFileChooser();
		chooser.setCurrentDirectory(new File("."));		
	}
	public void showFileDialog()
	{
		int r =chooser.showSaveDialog(null);
		if(r==JFileChooser.APPROVE_OPTION )
		{
			String fName=chooser.getSelectedFile().getAbsolutePath();
			cApp.SAVEFILENAME=fName;
			cApp.setFileName(fName);			
		}
	}
}

/////////FileSender class//////////
class FileSender
{
	private RandomAccessFile fileData;
	ClientApplet cApp;
	private byte[] b;
	public FileSender(ClientApplet ca)
	{
		try{
		cApp=ca;
		fileData=new RandomAccessFile(ca.getFileName(),"r");}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		
	}
	public byte[] getFileData() throws Exception
	{
		
		b=new byte[(int)fileData.length()];
		fileData.read(b);
		return b;
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -