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

📄 chatjframe.java

📁 采用Socket通信实现的聊天室程序,一个客户端,一个服务器端,两者可以建立连接并互相输入信息,读取对方输入的内容从而进行通信,绝对没有任何错误.
💻 JAVA
字号:
//【例10.2】  采用Socket通信实现的聊天室程序。
//① 聊天室的图形用户界面程序

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class ChatJFrame extends JFrame implements ActionListener
{
    private JTextArea text_receiver;                       //显示对话内容的文本区
    private JTextField text_sender;                        //输入发送内容的文本行
    private PrintWriter cout;                              //字符输出流对象
    private String name;                                   //网名
    
    public ChatJFrame(String name, String title, PrintWriter cout)  //构造方法
    {
        super("聊天室  "+name+"  "+title);
        this.setSize(320,240);
        this.setLocation(300,240);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        
        this.text_receiver = new JTextArea();
        this.text_receiver.setEditable(false);             //不可编辑
        this.add(this.text_receiver);
        
        JPanel panel = new JPanel();
        this.add(panel,"South");
        this.text_sender = new JTextField(12);
        panel.add(this.text_sender);
        this.text_sender.addActionListener(this);          //注册单击事件监听器

        JButton button_send = new JButton("发送");
        panel.add(button_send);
        button_send.addActionListener(this);

        JButton button_leave = new JButton("离线");
        panel.add(button_leave);
        button_leave.addActionListener(this);

        this.setVisible(true);
        this.setWriter(cout);
        this.name = name;
    }
 
    public ChatJFrame()
    {
        this("","",null);
    }

    public void setWriter(PrintWriter cout)                //设置字符输出流对象
    {
        this.cout = cout;
    }

    public void receive(String message)                    //显示对方发来的内容
    {
        text_receiver.append(message+"\r\n");
    }
        
    public void actionPerformed(ActionEvent e)
    {
        if (e.getActionCommand()=="离线")
        {
            if (this.cout!=null)
            {
                this.cout.println(name+"离线");
                this.cout.println("bye");
                this.cout = null;
            }
            text_receiver.append("我离线\n");
        }
        else                                               //发送
        {
            if (this.cout!=null)
            {
                this.cout.println(name+" 说:"+text_sender.getText());
                text_receiver.append("我说:"+text_sender.getText()+"\n");
                text_sender.setText("");
            }
            else
                text_receiver.append("已离线,不能再发送。\n");
        }
    }

    public static void main(String args[])
    {
        new ChatJFrame();
    }
}

⌨️ 快捷键说明

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