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

📄 mychatroomclient.java

📁 c/s模式java聊天室,对初学者有很好的帮助
💻 JAVA
字号:
package newackage;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.rmi.UnknownHostException;
import javax.swing.*;
import org.w3c.dom.events.MouseEvent;
public class MyChatRoomClient extends javax.swing.JFrame  implements Runnable { 
        PrintWriter out=null;
	BufferedReader in = null;
	Socket sock;
	public static int port=6666;
	Thread readThread;
	boolean isTrue = true;
        int line=0;
        JLabel label[]=new JLabel[20];
        static String address=null;
        int n=0;
        String name=null;
        String IPaddress=null;
       public MyChatRoomClient(String str,String name) {                
           super("大众聊天室.作者:甘海东  李业晨  陈春宇  06003402班");
           initComponents();
           this.name=name;
           IPaddress=str;
           connect(IPaddress);
           this.name=name;
        }
    
   
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jScrollPane1 = new javax.swing.JScrollPane();
        TextArea1 = new javax.swing.JTextArea();
        jScrollPane2 = new javax.swing.JScrollPane();
        TextArea2 = new javax.swing.JTextArea();
        Button2 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        list1 = new java.awt.List();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setBackground(new java.awt.Color(153, 244, 51));
        setForeground(new java.awt.Color(51, 0, 255));
        setName("\u6211\u4eec\u7684\u804a\u5929\u5ba4\uff1a\u674e\u4e1a\u6668\uff0c\u7518\u6d77\u4e1c\uff0c\u9648\u6625\u5b87");
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        TextArea1.setColumns(20);
        TextArea1.setRows(5);
        jScrollPane1.setViewportView(TextArea1);

        TextArea2.setColumns(20);
        TextArea2.setRows(5);
        TextArea2.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                TextArea2KeyPressed(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                TextArea2KeyTyped(evt);
            }
        });

        jScrollPane2.setViewportView(TextArea2);

        Button2.setBackground(new java.awt.Color(204, 204, 255));
        Button2.setFont(new java.awt.Font("宋体", 0, 24));
        Button2.setForeground(new java.awt.Color(51, 0, 204));
        Button2.setText("\u53d1\u9001");
        Button2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Button2ActionPerformed(evt);
            }
        });

        jLabel1.setBackground(new java.awt.Color(102, 255, 102));
        jLabel1.setFont(new java.awt.Font("宋体", 1, 24));
        jLabel1.setText("\u5728\u7ebf\u597d\u53cb");

        list1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                list1MouseClicked(evt);
            }
        });

        jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/111.JPG")));

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
                            .add(jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 344, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jLabel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .add(list1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
                            .add(jLabel1))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jLabel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .add(Button2))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 374, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(layout.createSequentialGroup()
                        .add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 323, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jLabel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE))
                    .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 352, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(list1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE)
                    .add(jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 124, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(Button2)
                .addContainerGap())
        );
        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void list1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_list1MouseClicked
           // TODO 将在此处添加您的处理代码:
    }//GEN-LAST:event_list1MouseClicked

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        exit();
    }//GEN-LAST:event_formWindowClosing

    private void TextArea2KeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TextArea2KeyPressed
       int j = evt.getKeyCode();
        if (j == evt.VK_ENTER) {           
                out.println(TextArea2.getText());
                out.flush();
                TextArea2.setText("");
            } 
    }//GEN-LAST:event_TextArea2KeyPressed

    private void TextArea2KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TextArea2KeyTyped
                    
          int j = evt.getKeyCode();
         if (j == evt.VK_ENTER) {
                     
                out.println(TextArea2.getText());
                out.flush();
                TextArea2.setText("");
            } 
     
    }//GEN-LAST:event_TextArea2KeyTyped

    private void Button2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Button2ActionPerformed
                    
	
                out.println(TextArea2.getText());
                out.flush();
                TextArea2.setText("");
           	        
    }//GEN-LAST:event_Button2ActionPerformed

    void connect(String str)
    {
          try {
			sock = new Socket(str, port);
			if (sock != null) {
				
                          processMsg("服务器连接成功!");
			}
			in = new BufferedReader(
					new InputStreamReader(sock.getInputStream()));
			out = new PrintWriter(sock.getOutputStream());
                        out.println(name);
                        out.flush();
		} catch (IOException ex) {
			     processMsg(ex.toString());
			     processMsg("Connect failed!");
                   
		}

		readThread = new Thread(this);
		readThread.start();
    }
    public void run() {
        String msg;  
		isTrue = true;
		while (isTrue) {
			try {
				msg = in.readLine(); 
                                 if(msg.startsWith("$$$$"))
                                {    
                                  this.wait();
                                    java.awt.EventQueue.invokeLater(new Runnable() {
                                 public void run() {
                                   new  MyChatRoomClient(IPaddress,"").setVisible(true);
                                      }
                                        });
                                }else
                                 if(msg.startsWith("$$$"))
                                {    
                                   list1.removeAll();
                                }
                                  else
                                if(msg.startsWith("$$#"))
                                {         
                                   list1.add(msg.substring(3));
                                }    else                                                       
                                 if (msg.equals("exit")) {
					processMsg(msg);
					isTrue = false;// 终止线程
				}
                                else 
                                    if (msg != null) {
					processMsg(msg);
				}
				Thread.sleep(1000);
			} catch (IOException e) {
				processMsg(e.toString());
			} catch (InterruptedException ei) {
				processMsg(ei.toString());
			}
		}
		try {// 服务器退出关闭连接和相关的"流"
			sock.close();
			in.close();
			out.close();
		} catch (IOException ioe) {
		}
   
    }
    public void processMsg(String msg) {// 客户端处理消息
		TextArea1.append(msg);
		TextArea1.append("\n");
		TextArea2.setText(null);// 把消息栏重新清空
	}
    public void exit() {// 窗口关闭;如果有连接则关闭连接和相关的"流"
		try {
			out.println("Client exit!");
			out.flush();
		} catch (Exception exc) {
		}
		
		try {
			sock.close();
			in.close();
			out.close();
		} catch (IOException ioe) {
		} 
                finally {
			System.exit(0);
		}
	}

    // 变量声明 - 不进行修改//GEN-BEGIN:variables
    private javax.swing.JButton Button2;
    private javax.swing.JTextArea TextArea1;
    private javax.swing.JTextArea TextArea2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private java.awt.List list1;
    // 变量声明结束//GEN-END:variables
   }

   

⌨️ 快捷键说明

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