/*\n * 这是一个Web缓存服务器的图形界面类\n * 主要功能是启动和停止Web缓存服务器,并提供设置缓存目录和端口号的功能\n * 使用了Swing库来创建图形界面\n */\n\npackage ui;\n\nimport java.awt.BorderLayout;\nimport java.awt.FlowLayout;\nimport java.io.File;\n\nimport javax.swing.JButton;\nimport javax.swing.JFileChooser;\nimport javax.swing.JFrame;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPanel;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTextArea;\nimport javax.swing.JTextField;\n\nimport Inteface.WebCache;\n\npublic class MainFrame extends JFrame implements Inteface.MainFrame {\n\n // 图形界面的各个组件\n private JButton Buttonstart;\n private JButton Buttonstop;\n private JButton ButtonsetDir;\n private JButton Buttonsetport;\n private JTextField Textport;\n private JTextArea TextMessage;\n private JPanel right;\n private JPanel bottom;\n \n // Web Cache代理服务器\n private WebCache webcache;\n private String DIR; // 缓存目录\n private int PORT; // 端口号\n\n public MainFrame() {\n super("Web缓存服务器"); // 设置窗口标题\n init(); // 初始化主窗口\n }\n \n // 初始化主窗口\n private void init() {\n Config(); // 初始化各个组件\n addCon(); // 添加组件到主窗口\n showFrame(); // 显示主窗口\n }\n \n // 显示主窗口\n private void showFrame() {\n this.pack(); // 根据组件的大小调整窗口的大小\n this.setVisible(true); // 设置窗口可见\n this.setLocationRelativeTo(null); // 将窗口居中显示\n this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 设置窗口关闭时的操作\n }\n \n // 添加组件到主窗口\n private void addCon() {\n bottom.add(Buttonstart);\n bottom.add(Buttonstop);\n bottom.add(Buttonsetport);\n bottom.add(ButtonsetDir);\n\n right.add(Textport);\n right.add(Buttonsetport);\n bottom.add(right);\n\n this.add(new JScrollPane(TextMessage));\n this.add(bottom, BorderLayout.SOUTH);\n }\n\n // 初始化各个组件\n private void Config() {\n Buttonstart = new JButton("启动"); // 创建一个启动按钮\n Buttonstop = new JButton("停止"); // 创建一个停止按钮\n Buttonsetport = new JButton("设置端口"); // 创建一个设置端口按钮\n ButtonsetDir = new JButton("设置缓存目录"); // 创建一个设置缓存目录按钮\n Textport = new JTextField(4); // 创建一个文本输入框,用于设置端口号\n TextMessage = new JTextArea(10, 20); // 创建一个文本域,用于显示消息\n right = new JPanel(new FlowLayout()); // 创建一个右侧面板,用于放置端口号设置相关的组件\n bottom = new JPanel(); // 创建一个底部面板,用于放置启动、停止、设置端口和设置缓存目录的按钮\n \n // 设置"设置缓存目录"按钮的动作监听器\n ButtonsetDir.addActionListener(e -> {\n JFileChooser jchose = new JFileChooser();\n jchose.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\n int returnValue = jchose.showOpenDialog(this);\n if (returnValue == JFileChooser.APPROVE_OPTION) {\n File file = jchose.getSelectedFile();\n DIR = file.getPath();\n webcache.setdir(DIR);\n }\n });\n\n Buttonstop.setEnabled(false); // 初始状态下,停止按钮不可点击\n\n // 设置"设置端口"按钮的动作监听器\n Buttonsetport.addActionListener(e -> {\n setport(); // 调用setport()方法设置端口号\n });\n \n // 设置"停止"按钮的动作监听器\n Buttonstop.addActionListener(e -> {\n Buttonstart.setEnabled(true);\n Buttonstop.setEnabled(false);\n Buttonsetport.setEnabled(true);\n Textport.setEnabled(true);\n webcache.stopServer(); // 调用WebCache对象的stopServer()方法停止服务器\n });\n \n start(); // 调用start()方法设置"启动"按钮的动作监听器\n }\n \n // 启动按钮的动作监听器\n public void start() {\n Buttonstart.addActionListener(e -> {\n if (DIR == null) {\n JOptionPane.showMessageDialog(this, "请选择缓存目录");\n } else if (PORT == 0) {\n JOptionPane.showMessageDialog(this, "请设置端口号");\n } else {\n String str = webcache.startServer(); // 调用WebCache对象的startServer()方法启动服务器\n if (str.equals("true")) {\n Messageappend("启动成功");\n Buttonstart.setEnabled(false);\n Buttonstop.setEnabled(true);\n Buttonsetport.setEnabled(false);\n Textport.setEnabled(false);\n } else {\n Buttonstart.setEnabled(true);\n Buttonstop.setEnabled(false);\n Buttonsetport.setEnabled(true);\n Textport.setEnabled(true);\n Messageappend(str);\n }\n }\n });\n }\n \n // 在文本域中追加消息\n public void Messageappend(String str) {\n if (str == null) {\n TextMessage.append("\n");\n }\n TextMessage.append(str + "\n");\n }\n\n // 停止按钮的动作监听器\n public void stop() {\n Buttonstop.addActionListener(e -> {\n webcache.stopServer(); // 调用WebCache对象的stopServer()方法停止服务器\n });\n }\n \n // 设置端口号\n public void setport() {\n PORT = Integer.parseInt((Textport.getText().trim())); // 获取文本输入框中的端口号并转换为整数\n System.out.println(PORT);\n webcache.setport(PORT); // 调用WebCache对象的setport()方法设置端口号\n }\n\n // 设置WebCache对象和设置this作为WebCache对象的Frame属性\n public void setWebCache(WebCache webcache) {\n this.webcache = webcache;\n this.webcache.setFrame(this);\n }\n

Web缓存服务器图形界面 - Java Swing 实现

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

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