package Client;import ClientClient;import javaxswing;import javaxswingborder;import javaawt;import javaawteventActionEvent;import javaawteventActionListener;public class ClientWindow extends JFrame
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)); // 在面板中添加带滚动条的消息显示区域
}
原文地址: https://www.cveoy.top/t/topic/hByk 著作权归作者所有。请勿转载和采集!