qqclient.java

来自「java的简单的qq聊天软件代码」· Java 代码 · 共 103 行

JAVA
103
字号
package chat;
//如果换ip要更改大约50行处

import javax.swing.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
import chat.SystemIn;
public class QQClient {
JFrame frame;
JTextField jtf;
JTextArea jta;
JComboBox jcb;
Socket s;
BufferedReader in;
PrintWriter out;
String name;

public static void main(String[] args) {
   System.out.print("Name:");
   String n=SystemIn.readString();
   QQClient c=new QQClient(n);
   c.receive();
}

public QQClient(String n){
   this.name=n;
   frame=new JFrame("Chat Room "+name);
   frame.setSize(400,300);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
   jta=new JTextArea();
   JScrollPane jsp=new JScrollPane(jta);
   frame.add(jsp);
  
   jta.setEditable(false);
  
   jtf=new JTextField(20);
   jcb=new JComboBox();
   jcb.addItem("All");
   JPanel panel=new JPanel();
   panel.add(jcb);
   panel.add(jtf);
   frame.add(panel,"South");
  
   frame.setVisible(true);
  
   try {
    s=new Socket("192.168.0.88",7000);//"192.168.18.6",7000);
    in=new BufferedReader(new InputStreamReader(s.getInputStream()));
    out=new PrintWriter(s.getOutputStream());
    out.println(name);
    out.flush();
   } catch (UnknownHostException e1) {
    e1.printStackTrace();
   } catch (IOException e1) {
    e1.printStackTrace();
   }
  
   jtf.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
     String text=jtf.getText();
     jtf.setText("");
     String to=(String)jcb.getSelectedItem();
     String t=name+"%"+to+"%"+text;
     out.println(t);
     out.flush();
    }
   });
}

public void receive(){
   try {
    while(true){
     String text=in.readLine();
     StringTokenizer st=new StringTokenizer(text,":");
     String type=st.nextToken();
     String value=st.nextToken();
     if (type.equals("Add")){
      if(!(this.name.equals(value))){
      this.jcb.addItem(value);
      }
      this.jta.append(value+" entered!\n");
     }
     if (type.equals("Del")){
      this.jcb.removeItem(value);
      this.jta.append(value+" exited!\n");
     }
     if (type.equals("Text")){
      StringTokenizer st2=new StringTokenizer(value,"%");
      String from=st2.nextToken();
      String to=st2.nextToken();
      String content=st2.nextToken();
      this.jta.append(from+" 说:"+content+"\n");
     }
    }
   } catch (IOException e) {
    e.printStackTrace();
   }
}
}

⌨️ 快捷键说明

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