package Client;

import Client.Client;

import javax.swing.; import javax.swing.border.; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;

public class ClientWindow extends JFrame{

JPanel clientSettings;  // 客户端设置面板
JTextField addressField;  // IP地址输入框
JTextField portField;  // 端口号输入框
JButton connectBtn;  // 连接按钮

JPanel areaPanel;  // 消息显示面板
JTextArea messageArea;  // 消息显示区域

JPanel sendPanel;  // 消息发送面板
JTextField sendField;  // 消息输入框
JButton sendBtn;  // 发送按钮

Client client;  // 客户端对象

public ClientWindow() {
    super("客户端");  // 设置窗口标题

    this.setSize(500,300);  // 设置窗口大小
    this.setResizable(false);  // 禁止窗口大小调整
    this.setLayout(new BorderLayout());  // 设置窗口布局为边界布局

    initializeServerSettings();  // 初始化服务器设置面板
    initializeAreaPanel();  // 初始化消息显示面板
    initializeSendPanel();  // 初始化消息发送面板

    this.add(clientSettings,BorderLayout.NORTH);  // 将服务器设置面板添加到窗口的北部位置
    this.add(areaPanel,BorderLayout.CENTER);  // 将消息显示面板添加到窗口的中部位置
    this.add(sendPanel,BorderLayout.SOUTH);  // 将消息发送面板添加到窗口的南部位置

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置窗口关闭操作为退出程序
    this.setVisible(true);  // 设置窗口可见

    // 连接按钮的点击事件处理
    connectBtn.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                int port = Integer.parseInt(portField.getText());  // 获取端口号输入框中的端口号
                client = new Client(port,messageArea, addressField.getText());  // 创建一个客户端对象
            }
            catch(java.lang.NumberFormatException exception) {
                messageArea.append("- 端口格式有误,请重新输入。\n");  // 如果端口号输入框中的内容不是数字,则显示错误提示信息
            }

            System.out.println(portField.getText());
        }
    });

    // 发送按钮的点击事件处理
    sendBtn.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.out.println(sendField.getText());  // 输出发送框中的内容到控制台
            client.sendMsg(sendField.getText());  // 调用客户端对象的sendMsg方法发送消息
            sendField.setText("");  // 清空发送框中的内容
        }
    });

}

// 初始化服务器设置面板
private void initializeServerSettings() {
    clientSettings = new JPanel();  // 创建服务器设置面板
    addressField = new JTextField(20);  // 创建IP地址输入框,长度为20
    portField = new JTextField(10);  // 创建端口号输入框,长度为10
    connectBtn = new JButton("Connect");  // 创建连接按钮
    clientSettings.setBorder(new EmptyBorder(10, 5, 10, 5));  // 设置面板的边框

    clientSettings.add(new JLabel("IP:"));  // 在面板中添加一个标签,内容为"IP:"
    clientSettings.add(addressField);  // 在面板中添加IP地址输入框
    clientSettings.add(new JLabel("Port:"));  // 在面板中添加一个标签,内容为"Port:"
    clientSettings.add(portField);  // 在面板中添加端口号输入框
    clientSettings.add(connectBtn);  // 在面板中添加连接按钮
}

// 初始化消息发送面板
private void initializeSendPanel() {
    sendPanel = new JPanel();  // 创建消息发送面板
    sendBtn = new JButton("Say");  // 创建发送按钮
    sendField = new JTextField(30);  // 创建消息输入框,长度为30
    sendPanel.setBorder(new EmptyBorder(10, 5, 10, 5));  // 设置面板的边框

    sendPanel.add(new JLabel("Say:"));  // 在面板中添加一个标签,内容为"Say:"
    sendPanel.add(sendField);  // 在面板中添加消息输入框
    sendPanel.add(sendBtn);  // 在面板中添加发送按钮
}

// 初始化消息显示面板
private void initializeAreaPanel() {
    areaPanel = new JPanel();  // 创建消息显示面板
    messageArea = new JTextArea(9, 40);  // 创建消息显示区域,大小为9行40列
    areaPanel.add(new JScrollPane(messageArea));  // 在面板中添加带滚动条的消息显示区域
}
package Client;import ClientClient;import javaxswing;import javaxswingborder;import javaawt;import javaawteventActionEvent;import javaawteventActionListener;public class ClientWindow extends JFrame

原文地址: https://www.cveoy.top/t/topic/hByk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录