📄 chatclient.java
字号:
package net;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
public class ChatClient {
JFrame jf;
JTextArea jta;
JTextField jtf;
JComboBox jcb;
Socket s;
BufferedReader in;
PrintWriter out;
List users;
public ChatClient(String name){
jf=new JFrame("QQ_"+name);
jf.setSize(400,300);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jta=new JTextArea();
jta.setEditable(false);
JScrollPane jsp=new JScrollPane(jta);
jtf=new JTextField();
jcb=new JComboBox(); //创建下拉列表
jcb.addItem("all"); //加上all
jf.getContentPane().add(jcb,"North"); //下拉列表放在上边
jf.getContentPane().add(jsp);
jf.getContentPane().add(jtf,"South");
jf.setVisible(true);
try {
s=new Socket("localhost",9000);
users=new LinkedList();
in=new BufferedReader(new InputStreamReader(s.getInputStream()));
out=new PrintWriter(s.getOutputStream());
out.println(name); //把用户姓名发给服务器
out.flush();
} catch (IOException e) {
}
class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
out.println(jcb.getSelectedItem()); //获得下列拉表中的值,并发送,也就是发给谁
out.println(jtf.getText()); //发送textfield的内容
jtf.setText("");
out.flush();
}
}
ActionListener al=new MyListener();
jtf.addActionListener(al);
input();
}
public void input(){
while(true){
try {
String str = in.readLine(); //读到的内容
//若内容中含JComboBox,则说明要加入一个上线用户,在下拉列表中加入此用户姓名
if(str.indexOf("JComboBox")==0){
String name=str.substring(9,str.length());
if(!users.contains(name)){ //若此在线用户链表中不含此姓名,则
jta.append(name+"正在聊天室\n");
users.add(name); //则在线用户链表中加入
jcb.addItem(name); //则下拉列表中加入
}
}
else if(str.indexOf("comIng")==0){
String name=str.substring(6,str.length());
if(!users.contains(name)){ //若此在线用户链表中不含此姓名,则
jta.append(name+"进入聊天室\n");
users.add(name); //则在线用户链表中加入
jcb.addItem(name); //则下拉列表中加入
}
}
//若内容中含removeItem,则说明要删除一个上线用户,在下拉列表中删除此用户姓名
else if(str.indexOf("removeItem")==0){
String name=str.substring(10,str.length());
users.remove(name); //则在线用户链表中删除
jcb.removeItem(name); //则下拉列表中删除
}
else jta.append(str+"\n");
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws Exception{
if(args.length<1){
System.out.println("your account name is needed, the word of 'all' can't be used!");
return;
}
if(args[0].equals("all")){
System.out.println("the word of 'all' can't be used!");
return;
}
new ChatClient(args[0]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -