📄 chatclient.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 + -