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

📄 portconf.java

📁 带注释的Java聊天程序
💻 JAVA
字号:
import java.awt.*;
import javax.swing.border.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;

/**
 * 生成端口设置对话框的类
 */
public class PortConf extends JDialog {
	JPanel panelPort = new JPanel();
	JButton save = new JButton();
	JButton cancel = new JButton();
	public static JLabel DLGINFO=new JLabel(//用于短文本字符串或图像或二者的显示区。
		"                              默认端口号为:8888");//创建具有指定文本的 JLabel 实例。

	JPanel panelSave = new JPanel();
	JLabel message = new JLabel();

	public static JTextField portNumber ;//JTextField 是一个轻量级组件,它允许编辑单行文本。

	public PortConf(JFrame frame) {
		super(frame, true);
		try {
			jbInit();
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		//设置运行位置,使对话框居中
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		this.setLocation( (int) (screenSize.width - 400) / 2 + 50,
						(int) (screenSize.height - 600) / 2 + 150);
		this.setResizable(false);
	}

	private void jbInit() throws Exception {
		this.setSize(new Dimension(300, 120));
		this.setTitle("端口设置");
		message.setText("请输入侦听的端口号:");
		portNumber = new JTextField(10);// 构造一个具有指定列数的新的空 TextField。
		portNumber.setText(""+ChatServer.port);//将此 TextComponent 文本设置为指定文本。如果该文本为 null 或空,则具有只删除旧文本的效果。插入文本时,得到的插入符的位置由该插入符类的实现确定。
		save.setText("保存");
		cancel.setText("取消");

		panelPort.setLayout(new FlowLayout());//,它是居中对齐的,默认的水平和垂直间隙是 5 个单位。
		panelPort.add(message);
		panelPort.add(portNumber);

		panelSave.add(new Label("              "));
		panelSave.add(save);
		panelSave.add(cancel);
		panelSave.add(new Label("              "));

		Container contentPane = getContentPane();
		contentPane.setLayout(new BorderLayout());
		contentPane.add(panelPort, BorderLayout.NORTH);
		contentPane.add(DLGINFO, BorderLayout.CENTER);
		contentPane.add(panelSave, BorderLayout.SOUTH);

		//保存按钮的事件处理
		save.addActionListener(
			new ActionListener() {
				public void actionPerformed (ActionEvent a) {
					int savePort;
					try{
						
						savePort=Integer.parseInt(PortConf.portNumber.getText());//将字符串参数作为有符号的十进制整数进行解析

						if(savePort<1 || savePort>65535){
							PortConf.DLGINFO.setText("               侦听端口必须是0-65535之间的整数!");
							PortConf.portNumber.setText("");
							return;
						}
						ChatServer.port = savePort;
						dispose();
					}
					catch(NumberFormatException e){
						PortConf.DLGINFO.setText("                错误的端口号,端口号请填写整数!");
						PortConf.portNumber.setText("");
						return;
					}
				}
			}
		);

		//关闭对话框时的操作
		this.addWindowListener(
			new WindowAdapter(){
				public void windowClosing(WindowEvent e){
					DLGINFO.setText("                              默认端口号为:8888");
				}
			}
		);

		//取消按钮的事件处理
		cancel.addActionListener(
			new ActionListener(){
				public void actionPerformed(ActionEvent e){
					DLGINFO.setText("                              默认端口号为:8888");
					dispose();
				}
			}
		);
	}
}

⌨️ 快捷键说明

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