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

📄 chatclient.java

📁 基础性的JAVA源代码
💻 JAVA
字号:
package exec.day1023;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;

class  ChatClient extends JFrame{
	private JLabel  label;
	private JTextField tf;
	private JButton send;
	private JTextArea ta;
	private JPanel panel;
	private Vector name_vector;
	private JList name_list;
	ObjectInputStream br;
	ObjectOutputStream pw;
	private boolean flag = true;
	public void init(String name){
		label = new JLabel("Input Data:");
		tf = new JTextField(20);
		send = new JButton("Send");
		ta = new JTextArea();
		panel = new JPanel();
		name_list = new JList();
		name_vector = new Vector();
		name_vector.add("Name List:");
		name_list.setListData(name_vector);

		setTitle(name);
		panel.add(label); 
		panel.add(tf); 
		panel.add(send);
		add(panel,"North");   
		add(ta);   
		add(name_list,"West");
		setSize(500,400);
	}
	
	public void eventHandle(){
		send.addActionListener(new SendMonitor());
		this.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e) {
				Info info = new Info();   
				info.setData("quit!");  				
				info.setDest("all");				
				try{
					pw.writeObject(info);
					pw.flush();
					flag = false;					
				}catch(Exception a){
					a.printStackTrace();
				}
			}
		});
	}
	

	public ChatClient(String name){
		this.init(name);
		try{
			Socket socket = new Socket("127.0.0.1",6666);
			pw = new ObjectOutputStream(socket.getOutputStream());
			br = new ObjectInputStream(socket.getInputStream());

			//马上将用户名称发送到服务器
			pw.writeObject(name);
			pw.flush();
		}catch(Exception e){
			e.printStackTrace();
		}
		setVisible(true);
		this.eventHandle();
		/**
		 *如果客户端不点击发送按钮,则一直运行while代码
		 */
		try{
			while(flag){
				Object result = br.readObject();
				if(result instanceof String){
					String str = (String)result;
					if(str.equals("q")){
						System.exit(0);
					}
					ta.append(str+"\n");
				}
				if(result instanceof Vector){
					name_list.setListData((Vector)result);
				}
			}
		}catch(Exception a){a.printStackTrace();}
	}

	public static void main(String[] args){
		if(args==null || args.length<=0){
			 JOptionPane.showMessageDialog(null,"请在命令行参数中输入您的名字!");
			 return;
		 }
		new ChatClient(args[0]);
	}

	class SendMonitor implements ActionListener{
		public void actionPerformed(ActionEvent e){
			String data = tf.getText();
			String dest = (String)name_list.getSelectedValue();
			Info info = new Info();   
			info.setData(data);  
			if(dest==null||dest.equals("Name List:")){
				dest = "all";
			}
			info.setDest(dest);	
			
			try{
				pw.writeObject(info);
				pw.flush();
			}catch(Exception a){
				a.printStackTrace();
			}
		}
	}
}

⌨️ 快捷键说明

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