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

📄 clientint.java

📁 使用java实现聊天室
💻 JAVA
字号:
/**
 * 
 */
package chat;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.Timer;
/**
 * @author jason
 *
 */
public class ClientInt extends JFrame implements ActionListener {

	/* (non-Javadoc)
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	
	Timer t = new Timer(5000,new TimerAction());
	String usr_name;
	public String remUser;
	
	class TimerAction implements ActionListener
	{
		Socket toServer;
		ObjectInputStream streamFromServer;
		PrintStream streamToServer;
		
		public void actionPerformed(ActionEvent e)
		{
			try{
			toServer = new Socket("localhost",1001);
			streamFromServer = new ObjectInputStream(toServer.getInputStream());
			streamToServer = new PrintStream(toServer.getOutputStream());
			message = txtMsg.getText();
			
			//send a message to Server
			streamToServer.println("来自定时器");
			
			//get the Vectors from Server
			Vector vector = (Vector)streamFromServer.readObject();
			//txtMessages.setText((String)streamFromServer.readObject());
			Vector vector1 = (Vector)streamFromServer.readObject();
			
			//list on-line users
			txtListUsers.setText("");			
			for(int j=1;j<vector1.capacity();j++)
			{
				txtListUsers.append((String)vector1.elementAt(j));
				txtListUsers.append("\n");				
			}
			//list messages
			int i = messageCount;
			for(;i<vector.capacity();i++)
			{
				txtMessages.append((String)vector.elementAt(i));
				txtMessages.append("\n");
			}
			messageCount =i;
			}//end of try
			catch(Exception ex)
			{
				System.out.println("异常"+ex);
			}
		}//end of the function actionPerformed
	}//end of the class TimerAction
	
	int messageCount = 0;
	String name;
	PrintStream streamToServer;
	ObjectInputStream streamFromServer;
	Socket toServer;
	
	JTextArea txtMessages;
	JTextArea txtListUsers;
	JTextField txtMsg;
	JButton msgSendBtn;
	JButton userLoginBtn;
	JButton userRegisterBtn;
	JButton userLogoutBtn;
	
	JLabel lblChatRoom;
	JLabel lblUserList;
	
	JScrollPane jspSendMsgPane;
	JScrollPane jspTxtMsgPane;
	JScrollPane jspUserListPane;
	
	JTextField textWriteMsg;
	String message;
	int nSend;
	
	public ClientInt(String nm)
	{
		remUser = nm;
		usr_name = nm;
		this.setTitle("FunChat:"+usr_name);
		JPanel panel = new JPanel();
		panel.setLayout(new GridBagLayout());
		GridBagConstraints gbCons = new GridBagConstraints();
		
		gbCons.gridx = 0;
		gbCons.gridy = 0;
		lblChatRoom = new JLabel("聊天室",SwingConstants.LEFT);
		panel.add(lblChatRoom,gbCons);
		
		gbCons.gridx = 1;
		gbCons.gridy = 0;
		lblUserList = new JLabel("在线用户",SwingConstants.LEFT);
		panel.add(lblUserList,gbCons);
		
		gbCons.gridx = 0;
		gbCons.gridy = 1;
		gbCons.gridwidth = 1;
		gbCons.gridheight = 1;
		gbCons.weightx = 1.0;
		gbCons.weighty = 1.0;
		txtMessages = new JTextArea(25,35);
		txtMessages.setEditable(false);
		jspTxtMsgPane = new JScrollPane(txtMessages,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		panel.add(jspTxtMsgPane,gbCons);
		
		gbCons.gridx = 1;
		gbCons.gridy = 1;
		gbCons.gridwidth=1;
		gbCons.gridheight=1;
		gbCons.weightx = 1.0;
		gbCons.weighty = 1.0;
		txtListUsers = new JTextArea(25,10);
		txtListUsers.setEditable(false);
		jspUserListPane = new JScrollPane(txtListUsers,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		panel.add(jspUserListPane,gbCons);
		
		gbCons.gridx = 0;
		gbCons.gridy = 2;
		gbCons.gridwidth=1;
		gbCons.gridheight=1;
		gbCons.weightx = 1.0;
		gbCons.weighty = 1.0;
		txtMsg =  new JTextField(35);
		jspSendMsgPane = new JScrollPane(txtMsg,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		panel.add(jspSendMsgPane,gbCons);
		
		gbCons.gridx = 1;
		gbCons.gridy = 2;
		gbCons.gridwidth=1;
		gbCons.gridheight=1;
		gbCons.weightx = 1.0;
		gbCons.weighty = 1.0;
		gbCons.anchor = GridBagConstraints.WEST;
		msgSendBtn = new JButton("发送");
		panel.add(msgSendBtn,gbCons);
		
		msgSendBtn.addActionListener(this);
		
		JPanel btnPanel = new JPanel();
		userLogoutBtn = new JButton("退出");
		userLogoutBtn.addActionListener(this);
		
		this.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e1)
			{
				try{
					Socket toServer;
					ObjectInputStream streamFromServer;
					PrintStream streamToServer;
					toServer = new Socket("localhost",1001);
					streamToServer = new PrintStream(toServer.getOutputStream());
					streamToServer.println("用户退出");
					streamToServer.println(remUser);
				}catch(Exception e2)
				{
					System.out.println("发生异常:"+e2);
				}
			}
		});
		
		btnPanel.add(userLogoutBtn);
		
		gbCons.gridx = 0;
		gbCons.gridy = 3;
		gbCons.gridwidth = 1;
		gbCons.gridheight = 1;
		gbCons.weightx = 1.0;
		gbCons.weighty = 1.0;
		gbCons.anchor = GridBagConstraints.EAST;
		gbCons.fill = GridBagConstraints.HORIZONTAL;
		panel.add(btnPanel,gbCons);
		
		getContentPane().add(panel);
		
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(546,576);
		setVisible(true);
		
		t.start();
	}
	
	public void actionPerformed(ActionEvent e1) {
		// TODO Auto-generated method stub
		JButton button = (JButton)e1.getSource();
		
		if(button.equals(userLogoutBtn))
		{
			try{
				toServer = new Socket("localhost",1001);
				streamToServer = new PrintStream(toServer.getOutputStream());
				
				//send the exit message to Server when exit
				streamToServer.println("用户退出");
				streamToServer.println(remUser);
			}catch(Exception e)
			{
				System.out.println("发生异常:"+e);
			}
			this.dispose();
		}
		else
		{
			int num1 = 0, num2 = 0, res =0;
			String name = "";
			try{
				toServer = new Socket("localhost",1001);
				streamFromServer = new ObjectInputStream(toServer.getInputStream());
				streamToServer = new PrintStream(toServer.getOutputStream());
				
				message = txtMsg.getText();
				String msg = message;
				
				//send user name and message
				streamToServer.println(usr_name+":"+msg);
				
				txtMsg.setText("");
				//read response from Server
				Vector vector = (Vector)streamFromServer.readObject();
				int i = messageCount;
				for(;i<vector.capacity();i++)
				{
					txtMessages.append((String)vector.elementAt(i));					
				}
				messageCount = 1;						
			}
			catch(Exception e)
			{
				System.out.println("发生异常"+e);
			}
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String nm = new String();
		ClientInt ci = new ClientInt(nm);
	}

}

⌨️ 快捷键说明

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