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

📄 chatroomframe.java

📁 用java(开发工具JBuilder)编写的聊天室程序
💻 JAVA
字号:
package chat.frame;

import java.awt.BorderLayout;
import javax.swing.JFrame;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.*;
import java.awt.*;
import chat.tools.*;
import java.awt.Rectangle;
import javax.swing.BorderFactory;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.net.Socket;
import java.io.ObjectOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.ObjectInputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import java.net.ServerSocket;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import chat.client.MyClient;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: zte</p>
 *
 * @author kwatt
 * @version 1.0
 */
/*
 *必须要在其中声明一个内部线程类用于实现不断更新聊天页面,还要有一个线程刷新人员列表
 */
public class ChatRoomFrame extends JFrame {

    public ChatRoomFrame() {
        try {
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
    public void setClient(MyClient client){
        this.client=client;
    }

    private void jbInit() throws Exception {
        this.setSize(new Dimension(800,600));
        Container contentPane=this.getContentPane();
        contentPane.setForeground(SystemColor.menuText);
        contentPane.setBackground(SystemColor.menu);
        contentPane.setSize(new Dimension(800,600));
        contentPane.setLayout(null);
        Tools.setCenter(this);
        this.setVisible(true);
        this.addWindowListener(new ChatRoomFrame_this_windowAdapter(this));
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setResizable(false);
        jPanel1.setBorder(BorderFactory.createEtchedBorder());
        jPanel1.setBounds(new Rectangle(2, 479, 621, 107));
        jPanel1.setLayout(null);
        jPanel2.setBorder(BorderFactory.createEtchedBorder());
        jPanel2.setBounds(new Rectangle(625, 13, 171, 581));
        jPanel2.setLayout(null);
        jPanel3.setBorder(BorderFactory.createEtchedBorder());
        jPanel3.setBounds(new Rectangle(3, 83, 620, 394));
        jPanel3.setLayout(null);
        jLabel1.setFont(new java.awt.Font("宋体", Font.PLAIN, 25));
        jLabel1.setForeground(Color.red);
        jLabel1.setToolTipText("");
        jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel1.setHorizontalTextPosition(SwingConstants.CENTER);
        jLabel1.setText("Chat Room");
        jLabel1.setBounds(new Rectangle(200, 28, 207, 44));
        jLabel2.setText("用户:");
        jLabel2.setBounds(new Rectangle(7, 524, 50, 22));
        nameText.setBounds(new Rectangle(85, 524, 73, 26));
        jScrollPane1.setBounds(new Rectangle(1, 2, 167, 511));
        jLabel3.setText("请在右面选择聊天者");
        jLabel3.setBounds(new Rectangle(10, 9, 116, 23));
        toText.setBounds(new Rectangle(143, 9, 100, 21));
        jLabel4.setText("请输入聊天内容:");
        jLabel4.setBounds(new Rectangle(10, 35, 115, 23));
        jButton1.setBounds(new Rectangle(447, 43, 67, 25));
        jButton1.setText("提交");
        jButton1.addActionListener(new ChatRoomFrame_jButton1_actionAdapter(this));
        jButton2.setBounds(new Rectangle(533, 43, 68, 25));
        jButton2.setText("清空");
        jButton2.addActionListener(new ChatRoomFrame_jButton2_actionAdapter(this));
        userList.addMouseListener(new ChatRoomFrame_userList_mouseAdapter(this));
        userList.setModel(listModel);
        jScrollPane2.setBounds(new Rectangle(143, 39, 286, 31));
        jScrollPane3.setBounds(new Rectangle(2, 5, 616, 387));
        allCheckBox.setText("所有人");
        allCheckBox.setBounds(new Rectangle(292, 10, 85, 23));
        jPanel1.add(jLabel3);
        jPanel1.add(toText);
        jPanel1.add(jLabel4);
        jPanel1.add(jScrollPane2);
        jPanel1.add(jButton1);
        jPanel1.add(jButton2);
        jPanel1.add(allCheckBox);
        jScrollPane2.getViewport().add(msgText);

        contentPane.add(jPanel2);
        jPanel2.add(jScrollPane1);
        jScrollPane1.getViewport().add(userList);
        jPanel2.add(nameText);
        jPanel2.add(jLabel2);
        contentPane.add(jPanel3);
        jPanel3.add(jScrollPane3);
        jScrollPane3.getViewport().add(chatText);
        contentPane.add(jLabel1);
        contentPane.add(jPanel1);
    }
    JPanel jPanel1 = new JPanel();
    JPanel jPanel2 = new JPanel();
    JPanel jPanel3 = new JPanel();
    JLabel jLabel1 = new JLabel();
    JLabel jLabel2 = new JLabel();
    public JLabel nameText = new JLabel();
    JScrollPane jScrollPane1 = new JScrollPane();
    public JList userList = new JList();
    JLabel jLabel3 = new JLabel();
    JTextField toText = new JTextField();
    JLabel jLabel4 = new JLabel();
    JButton jButton1 = new JButton();
    JButton jButton2 = new JButton();
    JScrollPane jScrollPane2 = new JScrollPane();
    JTextArea msgText = new JTextArea();
    JScrollPane jScrollPane3 = new JScrollPane();
    public JTextArea chatText = new JTextArea();
    public MyClient client;
    public DefaultListModel listModel = new DefaultListModel();
    JCheckBox allCheckBox = new JCheckBox();

    public void userList_mouseClicked(MouseEvent e) {
       String userName=(String)this.userList.getSelectedValue();
       this.toText.setText(userName);
    }

    public void this_windowOpened(WindowEvent e) {
//        System.out.println(userList);
//        client.getUserList();
    }

    public void jButton2_actionPerformed(ActionEvent e) {
        msgText.setText("");
    }

    public void jButton1_actionPerformed(ActionEvent e) {
        if(toText.getText().equals("")&&allCheckBox.isSelected()==false){
            JOptionPane.showMessageDialog(null,"对不起您没有选择要发送的");
        }else if(!toText.getText().equals("")&&allCheckBox.isSelected()==true){
            JOptionPane.showMessageDialog(null,"对不起不能在选择所有人的同时选择用户");
        }else if(!toText.getText().equals("")){
            String toUser=toText.getText();
            String toMes=msgText.getText();
            String fromUser=nameText.getText();
            if(toUser.equals(nameText.getText())){
                 JOptionPane.showMessageDialog(null,"对不起不能向自己发消息");
            }else{
                client.sendMessage(fromUser,toUser,toMes);
                this.chatText.append("\n您对"+toUser+"说:  "+toMes);
            //    this.msgText.insert("\n您对"+toUser+"说:  "+toMes,msgText.getText().length());
            }
        }else if(allCheckBox.isSelected()==true){
            if(msgText.getText().equals("")){
                JOptionPane.showMessageDialog(null,"您没有输入聊天内容。。");
            }else{
                String toMes = msgText.getText();
                String fromUser = nameText.getText();
                client.sendToAll(fromUser, toMes);
            }
        }
    }

    public void this_windowClosing(WindowEvent e) {
        client.logout(this.nameText.getText());
    }
}

class ChatRoomFrame_jButton1_actionAdapter implements ActionListener {
    private ChatRoomFrame adaptee;
    ChatRoomFrame_jButton1_actionAdapter(ChatRoomFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton1_actionPerformed(e);
    }
}

class ChatRoomFrame_jButton2_actionAdapter implements ActionListener {
    private ChatRoomFrame adaptee;
    ChatRoomFrame_jButton2_actionAdapter(ChatRoomFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton2_actionPerformed(e);
    }
}

class ChatRoomFrame_userList_mouseAdapter extends MouseAdapter {
    private ChatRoomFrame adaptee;
    ChatRoomFrame_userList_mouseAdapter(ChatRoomFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void mouseClicked(MouseEvent e) {
        adaptee.userList_mouseClicked(e);
    }
}

class ChatRoomFrame_this_windowAdapter extends WindowAdapter {
    private ChatRoomFrame adaptee;
    ChatRoomFrame_this_windowAdapter(ChatRoomFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void windowOpened(WindowEvent e) {
        adaptee.this_windowOpened(e);
    }

    public void windowClosing(WindowEvent e) {
        adaptee.this_windowClosing(e);
    }
}

⌨️ 快捷键说明

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