zoukankan      html  css  js  c++  java
  • springBoot swing 界面实现配置和日志打印

    废话少说,直接贴代码,

    代码全在一个包下面不需要展示目录结构了。

    ConfigFrame
    package com.adao.simulater.swing;
    
    import org.apache.log4j.Logger;
    
    import javax.swing.*;
    import java.awt.*;
    
    public class ConfigFrame {
        private final static Logger logger = Logger.getLogger(ConfigFrame.class);
    
        public static void show() {
    
            JPanel panel = new JPanel();
            panel.setLayout(null);
            panel = new ConfigDB().buildJpanel(panel);
            panel = new ConfigSocket().buildJpanel(panel);
            panel = new ConfigEvent().buildJpanel(panel);
            panel = new ConfigTask().buildJpanel(panel);
            panel = new ConfigPrint().buildJpanel(panel);
            buildFrame(panel);
        }
    
        protected static JButton buildJButton(String name, int x, int y, int width, int height) {
            JButton button = new JButton(name);
            button.setBounds(x, y, width, height);
            return button;
        }
    
        // 文本框
        protected JTextField buildJTextField(JTextField jtf, String value, String name, int columns, int x, int y, int width, int height) {
            jtf = new JTextField(columns);
            jtf.setText(value);
            jtf.setName(name);
            jtf.setBounds(x, y, width, height);
            logger.info(name + "======" + value);
            return jtf;
        }
    
        protected static JLabel buildJLabel(String name, int x, int y, int width, int height) {
            JLabel label = new JLabel(name);
            label.setBounds(x, y, width, height);
    
            return label;
        }
    
        protected JLabel buildJBorder(String name, int x, int y, int width, int height) {
            JLabel label = new JLabel();
            label.setBounds(x, y, width, height);
            label.setBorder(BorderFactory.createTitledBorder(name));
            return label;
        }
    
        protected static void saveResult(String msg) {
            if ("true".equals(msg)) {
                JOptionPane.showMessageDialog(null, "保存成功!", "提示", JOptionPane.PLAIN_MESSAGE);
            } else {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "保存异常!", "提示", JOptionPane.ERROR_MESSAGE);
            }
        }
    
        private static void buildFrame(JComponent component) {
            JFrame frame = new JFrame("Simulater Terminal");
            component.setBounds(0, 0, 1152, 864);
            frame.add(component);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.getContentPane().setLayout(new BorderLayout());
            frame.getContentPane().setLayout(null);
            frame.getContentPane().add(BorderLayout.CENTER, component);
            // 设置窗口最小尺寸
            frame.setMinimumSize(new Dimension(1152, 864));
    
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            frame.setResizable(true);
        }
    
    
    }
    ConfigDB
    package com.adao.simulater.swing;
    
    import com.linyang.simulater.common.Constant;
    import com.linyang.simulater.common.PropertiesUtil;
    import com.linyang.simulater.util.ComMethod;
    import org.apache.log4j.Logger;
    import org.springframework.beans.factory.annotation.Autowired;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @Classname ConfigDB
     * @Date 2020/7/17
     * @Created adao
     */
    public class ConfigDB {
        private final static Logger logger = Logger.getLogger(ConfigDB.class);
    
        @Autowired
        PropertiesUtil propertiesUtil;
    
        private JTextField urlTextField;
        private JTextField usernameTextField;
        private JTextField passwordTextField;
    
        public ConfigFrame cf = new ConfigFrame();
        public JPanel buildJpanel(JPanel panel) {
            String url = propertiesUtil.getConUrl();
            String username = propertiesUtil.getConUserName();
            String password = propertiesUtil.getConPassWord();
    
            int y0 = 0;
    
            panel.add(cf.buildJBorder("数据库配置", 5, y0 + 10, 490, 180));
    
            // URL
            panel.add(cf.buildJLabel("URL:", 15, y0 + 40, 80, 25));
            urlTextField = cf.buildJTextField(urlTextField, url, "dbUrl", 20, 100, y0 + 40, 350, 25);
            panel.add(urlTextField);
            // 用户名
            panel.add(cf.buildJLabel("用户名:", 15, y0 + 70, 80, 25));
            usernameTextField = cf.buildJTextField(usernameTextField, username, "dbUserName", 20, 100, y0 + 70, 165, 25);
            panel.add(usernameTextField);
    
            // 密码
            panel.add(cf.buildJLabel("密码:", 15, y0 + 100, 80, 25));
            passwordTextField = cf.buildJTextField(passwordTextField, password, "dbPassWord", 20, 100, y0 + 100, 165, 25);
            panel.add(passwordTextField);
    
            // 添加按钮,绑定事件监听
            JButton saveButton = cf.buildJButton("保存", 100, y0 + 140, 80, 25);
            addActionListener(saveButton);
            panel.add(saveButton);
    
            return panel;
        }
    
        // 为按钮绑定监听
        private void addActionListener(JButton saveButton) {
            saveButton.addActionListener(
                    new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            activeEvent();
                        }
                    });
    
        }
    
        // save event
        private void activeEvent() {
            String url = propertiesUtil.getConUrl();
            String username = propertiesUtil.getConUserName();
            String password = propertiesUtil.getConPassWord();
            String textUrl = urlTextField.getText().toString();
            String textUsername = usernameTextField.getText().toString();
            String textPassword = passwordTextField.getText().toString();
            if (ComMethod.isEmpty(textUrl)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "请输入数据库URL!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (ComMethod.isEmpty(textUsername)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "请输入用户名!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (ComMethod.isEmpty(textPassword)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "请输入密码!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (url.equals(textUrl) && textUsername.equals(username) && textPassword.equals(password) ) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "配置参数未更改!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else {
    
                propertiesUtil.setConUrl(textUrl);
                propertiesUtil.setConUserName(textUsername);
                propertiesUtil.setConPassWord(textPassword);
    
            }
        }
    }
    ConfigEvent
    package com.adao.simulater.swing;
    
    import com.adao.simulater.common.Constant;
    import com.adao.simulater.common.PropertiesUtil;
    import com.adao.simulater.util.ComMethod;
    import org.apache.log4j.Logger;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.PostConstruct;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @Classname ConfigTask
     * @Date 2020/7/20
     * @Created adao
     */
    public class ConfigEvent {
        private final static Logger logger = Logger.getLogger(ConfigEvent.class);
    
        @Autowired
        PropertiesUtil propertiesUtil;
    
        private JTextField eventPeriodUnitField;
        private JTextField eventPeriodMinField;
        private JTextField eventPeriodMaxField;
    
        private ConfigFrame cf = new ConfigFrame();
    
        public JPanel buildJpanel(JPanel panel) {
            ConfigFrame cf = new ConfigFrame();
            String eventPeriodUnit = String.valueOf(propertiesUtil.getConEventPeriodUnit());
            String eventPeriodMin = String.valueOf(propertiesUtil.getConEventPeriodMin());
            String eventPeriodMax = String.valueOf(propertiesUtil.getConEventPeriodMax());
    
            int y0 = 360;
    
            //添加服务器配置区
            panel.add(cf.buildJBorder("事件配置", 5, y0, 490, 180));
            //事件周期基数unit
            panel.add(cf.buildJLabel("周期基数:", 15, y0 + 30, 80, 25));
            eventPeriodUnitField = cf.buildJTextField(eventPeriodUnitField, eventPeriodUnit, "serverAddr", 20, 100, y0 + 30, 165, 25);
            panel.add(eventPeriodUnitField);
            //事件上报周期范围最小数
            panel.add(cf.buildJLabel("周期最小数:", 15, y0 + 60, 80, 25));
            eventPeriodMinField = cf.buildJTextField(eventPeriodMinField, eventPeriodMin, "serverPort", 20, 100, y0 + 60, 165, 25);
            panel.add(eventPeriodMinField);
    
            //事件上报周期范围最大数
            panel.add(cf.buildJLabel("周期最大数:", 15, y0 + 90, 80, 25));
            eventPeriodMaxField = cf.buildJTextField(eventPeriodMaxField, eventPeriodMax, "serverPort", 20, 100, y0 + 90, 165, 25);
            panel.add(eventPeriodMaxField);
    
            // 添加按钮,绑定事件监听
            JButton saveButton = cf.buildJButton("保存", 100, y0 + 130, 80, 25);
            addActionListener(saveButton);
            panel.add(saveButton);
    
            return panel;
        }
    
        // 为按钮绑定监听
        private void addActionListener(JButton button) {
            button.addActionListener(
                    new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            save();
                        }
                    });
    
        }
    
        // save event
        private void save() {
            String eventPeriodUnit = String.valueOf(propertiesUtil.getConEventPeriodUnit());
            String eventPeriodMin = String.valueOf(propertiesUtil.getConEventPeriodMin());
            String eventPeriodMax = String.valueOf(propertiesUtil.getConEventPeriodMax());
            String eventPeriodUnitText = eventPeriodUnitField.getText().toString();
            String eventPeriodMinText = eventPeriodMinField.getText().toString();
            String eventPeriodMaxText = eventPeriodMaxField.getText().toString();
            if (ComMethod.isEmpty(eventPeriodUnitText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "请输入事件上报周期基数(毫秒)!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (ComMethod.isEmpty(eventPeriodMinText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "请输入事件上报周期随机最小数!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (ComMethod.isEmpty(eventPeriodMaxText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "请输入事件上报周期随机最大数!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (Integer.valueOf(eventPeriodMinText) >= Integer.valueOf(eventPeriodMaxText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "最小数要小于最大数,请修改!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (eventPeriodUnit.equals(eventPeriodUnitText) && eventPeriodMin.equals(eventPeriodMinText) && eventPeriodMax.equals(eventPeriodMaxText) ) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "配置参数未更改!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else {
                propertiesUtil.setConEventPeriodUnit(Long.valueOf(eventPeriodUnitText));
                propertiesUtil.setConEventPeriodMin(Integer.valueOf(eventPeriodMinText));
                propertiesUtil.setConEventPeriodMax(Integer.valueOf(eventPeriodMaxText));
    
            }
        }
    
    }
    ConfigPrint

    package com.adao.simulater.swing;
    
    import org.apache.log4j.Appender;
    import org.apache.log4j.Logger;
    import org.apache.log4j.WriterAppender;
    
    import javax.swing.*;
    import java.io.PipedReader;
    import java.io.PipedWriter;
    import java.io.Writer;
    
    public class ConfigPrint {
    
        JTextArea logTextArea;
    
        public ConfigFrame cf = new ConfigFrame();
    
        public JPanel buildJpanel(JPanel panel) {
    
            int y0 = 0;
    
            panel.add(cf.buildJBorder("日志", 500, y0 + 10, 630, 720));
    
            logTextArea = new JTextArea();
            panel.add(logTextArea);
    
            JScrollPane logScrollPane = new JScrollPane();
            logScrollPane.setBounds(510, y0 + 40, 610, 680);
            logScrollPane.getViewport().add(logTextArea);
            panel.add(logScrollPane);
    
            Logger root = Logger.getRootLogger();
            try {
                Appender appender = root.getAppender("WriterAppender");
                PipedReader reader = new PipedReader();
                Writer writer = new PipedWriter(reader);
    
                ((WriterAppender) appender).setWriter(writer);
    
                Thread t = new Appendered(reader, logTextArea, logScrollPane);
                t.start();
    
            } catch (Exception e) {
            }
            return panel;
        }
    
    }
    Appendered
    package com.adao.simulater.swing;
    
    import javax.swing.*;
    import java.io.PipedReader;
    import java.util.Scanner;
    
    public class Appendered extends Thread {
        PipedReader reader;
        JTextArea textArea;
        JScrollPane scroll;
       
        public Appendered(PipedReader reader,JTextArea textArea, JScrollPane scroll) {
            this.reader = reader;
            this.textArea=textArea;
            this.scroll=scroll;
            
        }
    
        public void run() {
            Scanner scanner = new Scanner(reader);
            while (scanner.hasNext()) {
               // System.out.println(scanner.nextLine());
                textArea.append(scanner.nextLine());
                textArea.append("
    ");
              //使垂直滚动条自动向下滚动
                scroll.getVerticalScrollBar().setValue(scroll.getVerticalScrollBar().getMaximum());
            }
        }
    }
    ConfigSocket
    package com.adao.simulater.swing;
    
    import com.adao.simulater.common.Constant;
    import com.adao.simulater.common.PropertiesUtil;
    import com.adao.simulater.util.ComMethod;
    import org.apache.log4j.Logger;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.PostConstruct;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.net.InetSocketAddress;
    import java.net.Socket;
    import java.net.SocketAddress;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.regex.Pattern;
    
    /**
     * @Classname ConfigSocket
     * @Date 2020/7/20
     * @Created YinTao
     */
    public class ConfigSocket {
        private final static Logger logger = Logger.getLogger(ConfigDB.class);
        private JTextField serverAddrField;
        private JTextField serverPortField;
    
        @Autowired
        PropertiesUtil propertiesUtil;
    
        private ConfigFrame cf = new ConfigFrame();
        public JPanel buildJpanel(JPanel panel) {
            ConfigFrame cf = new ConfigFrame();
            String serverAddr =  propertiesUtil.getConServerAddress();
            String serverPort = String.valueOf(propertiesUtil.getConServerPort());
    
            int y0 = 200;
    
            /**
             * 服务器配置
             */
            //添加服务器配置区
            panel.add(cf.buildJBorder("Socket服务配置", 5, y0, 490,150));
            //添加服务器地址标签
            panel.add(cf.buildJLabel("服务器地址:", 15, y0 + 30, 80, 25));
            serverAddrField = cf.buildJTextField(serverAddrField, serverAddr, "serverAddr", 20, 100, y0 + 30, 165, 25);
            panel.add(serverAddrField);
            //添加服务器端口
            panel.add(cf.buildJLabel("服务器端口:", 15, y0 + 60, 80, 25));
            serverPortField = cf.buildJTextField(serverPortField, serverPort, "serverPort", 20, 100, y0 + 60, 165, 25);
            panel.add(serverPortField);
    
            //添加保存按钮
            JButton linkOrBreak = cf.buildJButton("保存", 100, y0 + 100, 80, 25);
            addActionListener(linkOrBreak);
            panel.add(linkOrBreak);
            // 添加测试按钮
            JButton saveButton = cf.buildJButton("测试", 200, y0 + 100, 80, 25);
            addActionListener(saveButton);
            panel.add(saveButton);
    
            return panel;
        }
    
        // 为按钮绑定监听
        private void addActionListener(JButton saveButton) {
            saveButton.addActionListener(
                    new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
    
                            if(saveButton.getText()=="保存")
                            {
                                activeEvent();
                            }
                            else if(saveButton.getText()=="测试")
                            {
                                testLink();
                            }
    
                        }
                    });
    
        }
    
        // save event
        private void activeEvent() {
            String serverAddr =  propertiesUtil.getConServerAddress();
            String serverPort = String.valueOf(propertiesUtil.getConServerPort());
            String serverAddrText = serverAddrField.getText().toString();
            String serverPortText = serverPortField.getText().toString();
            if (ComMethod.isEmpty(serverAddrText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "请输入Socker服务地址!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (!ComMethod.isIp(serverAddrText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "Socker 服务地址格式错误!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (ComMethod.isEmpty(serverPortText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "请输入Socker服务端口!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (Integer.valueOf(serverPortText) < 1 || Integer.valueOf(serverPortText) > 65535) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "端口配置错误,或超出范围[1,65535]", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (!Pattern.matches("^\d{1,5}$", serverPortText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "Socker端口配置错误,请输入数字5位数字", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (serverAddr.equals(serverAddrText) && serverPort.equals(serverPortText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "配置参数未更改!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else {
    
                propertiesUtil.setConServerAddress(serverAddrText);
                propertiesUtil.setConServerPort(Integer.valueOf(serverPortText));
    
            }
        }
        // 测试连接
        private void testLink() {
            String serverAddrText = serverAddrField.getText().toString();
            String serverPortText = serverPortField.getText().toString();
            if (ComMethod.isEmpty(serverAddrText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "请输入Socker服务地址!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (!ComMethod.isIp(serverAddrText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "Socker服务地址格式错误!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (ComMethod.isEmpty(serverPortText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "请输入Socker服务端口!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (Integer.valueOf(serverPortText) < 1 || Integer.valueOf(serverPortText) > 65535) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "端口配置超出范围[1,65535]", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else if (!Pattern.matches("^\d{1,5}$", serverPortText)) {
                Toolkit.getDefaultToolkit().beep();
                JOptionPane.showMessageDialog(null, "Socker端口配置错误,请输入数字5位数字", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else {
    
                try {
                    SocketAddress address = new InetSocketAddress(serverAddrText, Integer.parseInt(serverPortText));
                    Socket socket = new Socket();
                    socket.connect(address, 2 * 1000);
                    socket.close();
                    JOptionPane.showMessageDialog(null, "测试连接正常", "提示", JOptionPane.INFORMATION_MESSAGE);
    
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, "测试连接异常", "提示", JOptionPane.INFORMATION_MESSAGE);
                }
    
            }
        }
    }
    taskStart
    package com.adao.simulater.swing;
    
    import com.adao.simulater.common.AppContextUtil;
    import com.adao.simulater.common.PropertiesUtil;
    import com.adao.simulater.pojo.TaskInfoBean;
    import com.adao.simulater.service.FreezeDayService;
    import com.adao.simulater.service.TaskService;
    import com.adao.simulater.service.impl.TaskServiceImpl;
    import com.adao.simulater.task.TaskManager;
    import com.adao.simulater.util.ComMethod;
    import org.apache.log4j.Logger;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import javax.swing.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    
    /**
     * @Classname ConfigTask
     * @Description TODO
     * @Date 2020/7/21
     * @Created adao
     */
    public class ConfigTask {
        private final static Logger logger = Logger.getLogger(ConfigEvent.class);
    
        @Autowired
        PropertiesUtil propertiesUtil;
    
        private JButton reportEnd;
        private JButton reportStart;
        private JComboBox codeTypeBox;
    
        private ConfigFrame cf = new ConfigFrame();
        private static String defaultTest = "-- 选择要执行的任务名称 --";
        private static String choseTask = null;
    
        private AppContextUtil appContextUtil = new AppContextUtil();
        private TaskService taskService = appContextUtil.getContext().getBean(TaskService.class);
    
        public JPanel buildJpanel(JPanel panel) {
            ConfigFrame cf = new ConfigFrame();
    
            int y0 = 550;
            List<TaskInfoBean> tasks = taskService.getAllTaskInfo();
    
            panel.add(cf.buildJBorder("任务配置", 5, y0, 490, 180));
            panel.add(cf.buildJLabel("选择任务:", 15, y0 + 30, 80, 25));
            codeTypeBox = buildJComboBox( tasks, 100, y0 + 30, 350, 25);
            addItemListener(codeTypeBox);
            panel.add(codeTypeBox);
    
            //开始上报按钮
            reportStart = cf.buildJButton("开始上报", 100, y0 + 120, 100, 25);
            addActionListener(reportStart);
            panel.add(reportStart);
    
            //添加停止上报按钮
            reportEnd = cf.buildJButton("停止上报", 300, y0 + 120, 100, 25);
            reportEnd.setEnabled(false);
            addActionListener(reportEnd);
            panel.add(reportEnd);
            return panel;
        }
    
        // 为按钮绑定监听
        private void addActionListener(JButton button) {
            button.addActionListener(
                    new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            if (button.getText() == "开始上报") {
                                taskStart();
                            } else if (button.getText() == "停止上报") {
                                taskStop();
                            }
                        }
                    });
    
        }
    
        // 为下拉事件监听器
        private void addItemListener(JComboBox comboBox) {
            comboBox.addItemListener(
                    new ItemListener() {
                        @Override
                        public void itemStateChanged(ItemEvent e) {
                            if (e.getStateChange() == ItemEvent.SELECTED) {
                                // 选择的下拉框选项
                                choseTask = e.getItem().toString();
                            }
                        }
                    });
    
        }
    
        private static JComboBox buildJComboBox(List<TaskInfoBean> elements, int x, int y, int width, int height) {
    
            DefaultComboBoxModel codeTypeModel = new DefaultComboBoxModel();
            // elements 下拉框中的选项
            codeTypeModel.addElement(defaultTest);
            for (int i = 0; i < elements.size(); i++) {
                TaskInfoBean taskInfo = elements.get(i);
                String taskName = taskInfo.getTaskName();
                codeTypeModel.addElement(taskName);
            }
    
            JComboBox codeTypeBox = new JComboBox(codeTypeModel);
            codeTypeBox.setBounds(x, y, width, height);
            return codeTypeBox;
        }
    
        // 上报开始
        private void taskStart() {
            // 开始执行任务
            if (ComMethod.isEmpty(choseTask) ||  choseTask.equals(defaultTest)){
                JOptionPane.showMessageDialog(null, "选择要执行的任务名称!", "提示", JOptionPane.INFORMATION_MESSAGE);
            } else {
                propertiesUtil.setConTaskEnable(true);
               
                TaskManager taskManager = new TaskManager();
                taskManager.init(choseTask);
                reportStart.setEnabled(false);
                reportEnd.setEnabled(true);
                logger.info("客户端连接成功,上报开始");
            }
    
        }
    
        // 上报停止
        private void taskStop() {
            propertiesUtil.setConTaskEnable(false);
           
            reportStart.setEnabled(true);
            reportEnd.setEnabled(false);
            logger.info("上报即将停止,需等待本次全部完成");
        }
    
    }

    其他文件:

    PropertiesUtil
    package com.adao.simulater.common;
    
    import com.adao.simulater.util.ComMethod;
    import org.apache.log4j.Logger;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Map;
    import java.util.Properties;
    
    /**
     * 配置
     * @author adao
     */
    @Component
    public class PropertiesUtil {
        private final static Logger logger = Logger.getLogger(PropertiesUtil.class);
    
        public static final String propertiesPath = "src/main/resources/constant.properties";
    
        private static Constant constant;
    
        @Autowired
        public void setConfig(Constant constant) {
            PropertiesUtil.constant = constant;
        }
    
        public static boolean getConTaskEnable() {
            return constant.isTaskEnable();
        }
    
        public static void setConTaskEnable(boolean taskEnable) {
            constant.setTaskEnable(taskEnable);
        }
    
        public static String getConServerAddress() {
            return constant.getServerAddress();
        }
    
        public static void setConServerAddress(String serverAddress) {
            constant.setServerAddress(serverAddress);
        }
    
        public static Integer getConServerPort() {
            return constant.getServerPort();
        }
    
        public static void setConServerPort(Integer serverPort) {
            constant.setServerPort(serverPort);
        }
    
        public static Long getConEventPeriodUnit() {
            return constant.getEventPeriodUnit();
        }
    
        public static void setConEventPeriodUnit(Long eventPeriodUnit) {
            constant.setEventPeriodUnit(eventPeriodUnit);
        }
    
        public static Integer getConEventPeriodMax() {
            return constant.getEventPeriodMax();
        }
    
        public static void setConEventPeriodMax(int eventPeriodMax) {
            constant.setEventPeriodMax(eventPeriodMax);
        }
    
        public static Integer getConEventPeriodMin() {
            return constant.getEventPeriodMin();
        }
    
        public static void setConEventPeriodMin(Integer eventPeriodMin) {
            constant.setEventPeriodMin(eventPeriodMin);
        }
    
        public static String getConUrl() {
            return constant.getUrl();
        }
    
        public static void setConUrl(String url) {
            constant.setUrl(url);
        }
    
        public static String getConUserName() {
            return constant.getUserName();
        }
    
        public static void setConUserName(String userName) {
            constant.setUserName(userName);
        }
    
        public static String getConPassWord() {
            return constant.getPassWord();
        }
    
        public static void setConPassWord(String passWord) {
            constant.setPassWord(passWord);
        }
    
        public static boolean getConHeartEnable() {
            return constant.isHeartEnable();
        }
    
    
    }
    Constant
    package com.adao.simulater.common;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;
    
    /**
     **/
    @Configuration
    @ConfigurationProperties(prefix = "constant")
    @PropertySource(value = "classpath:constant.properties")
    public class Constant {
    
        private boolean taskEnable;
        private Long taskDelay;
        private boolean heartEnable;
        private Long clientHeart;
        private String serverAddress;
        private Integer serverPort;
        private Integer connectTimeout;
        private Long eventPeriodUnit;
        private Integer eventPeriodMax;
        private Integer eventPeriodMin;
        private String url;
        private String userName;
        private String passWord;
    
        public boolean isTaskEnable() {
            return taskEnable;
        }
    
        public void setTaskEnable(boolean taskEnable) {
            this.taskEnable = taskEnable;
        }
    
        public Long getTaskDelay() {
            return taskDelay;
        }
    
        public void setTaskDelay(Long taskDelay) {
            this.taskDelay = taskDelay;
        }
    
        public boolean isHeartEnable() {
            return heartEnable;
        }
    
        public void setHeartEnable(boolean heartEnable) {
            this.heartEnable = heartEnable;
        }
    
        public Long getClientHeart() {
            return clientHeart;
        }
    
        public void setClientHeart(Long clientHeart) {
            this.clientHeart = clientHeart;
        }
    
        public String getServerAddress() {
            return serverAddress;
        }
    
        public void setServerAddress(String serverAddress) {
            this.serverAddress = serverAddress;
        }
    
        public Integer getServerPort() {
            return serverPort;
        }
    
        public void setServerPort(Integer serverPort) {
            this.serverPort = serverPort;
        }
    
        public Integer getConnectTimeout() {
            return connectTimeout;
        }
    
        public void setConnectTimeout(Integer connectTimeout) {
            this.connectTimeout = connectTimeout;
        }
    
        public Long getEventPeriodUnit() {
            return eventPeriodUnit;
        }
    
        public void setEventPeriodUnit(Long eventPeriodUnit) {
            this.eventPeriodUnit = eventPeriodUnit;
        }
    
        public Integer getEventPeriodMax() {
            return eventPeriodMax;
        }
    
        public void setEventPeriodMax(Integer eventPeriodMax) {
            this.eventPeriodMax = eventPeriodMax;
        }
    
        public Integer getEventPeriodMin() {
            return eventPeriodMin;
        }
    
        public void setEventPeriodMin(Integer eventPeriodMin) {
            this.eventPeriodMin = eventPeriodMin;
        }
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getPassWord() {
            return passWord;
        }
    
        public void setPassWord(String passWord) {
            this.passWord = passWord;
        }
    }

    proterties

    constant.taskEnable=true
    constant.taskDelay=1000
    constant.heartEnable=true
    constant.clientHeart=60000
    constant.serverAddress=127.0.0.1
    constant.serverPort=8511
    constant.connectTimeout=3000
    constant.eventPeriodUnit=60000
    constant.eventPeriodMax=10
    constant.eventPeriodMin=1
    constant.url=jdbc:oracle:thin:@192.168.127.150:1521:ORCL
    constant.userName=coll_platform
    constant.passWord=coll_platform

    log.properties

    log4j.rootLogger=DEBUG,stdout,file,WriterAppender
    log4j.additivity.org.apache=true
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.threshold=INFO
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    #log4j.appender.stdout.layout.ConversionPattern=%-5p %c{1}:%L - %m%n
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
    
    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    #log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH-mm
    #log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %d %p [%c] - %m%n
    log4j.appender.file.Threshold=INFO
    log4j.appender.file.append=true
    #log4j.appender.file.File=/workspaces/logs/simulater/simulater.log
    log4j.appender.file.File=./logs/simulator.log
    
    log4j.appender.WriterAppender=org.apache.log4j.WriterAppender
    log4j.appender.WriterAppender.Threshold=debug
    log4j.appender.WriterAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.WriterAppender.layout.ConversionPattern= - %m%n
    SimulaterApplication
    @SpringBootApplication
    // 扫描 mybatis 通用 mapper 所在的包
    @MapperScan(basePackages = "com.adao.simulater.mapper")
    // 扫描所有包以及相关组件包
    @ComponentScan(basePackages = {"com.adao.simulater"})
    @EnableConfigurationProperties(Constant.class)
    public class SimulaterApplication {
        private final static Logger logger = Logger.getLogger(SimulaterApplication.class);
    
        public static void main(String[] args) {
            SpringApplication.run(SimulaterApplication.class, args);
    
            logger.info("程序开始启动...");
    
            // 可视化界面模型
            ConfigFrame cf=new ConfigFrame();
            cf.show();
        }
    
    }

    执行结果

     

  • 相关阅读:
    布局重用 include merge ViewStub
    AS 常用插件 MD
    AS 2.0新功能 Instant Run
    AS .ignore插件 忽略文件
    AS Gradle构建工具与Android plugin插件【大全】
    如何开通www国际域名个人网站
    倒计时实现方案总结 Timer Handler
    AS 进行单元测试
    RxJava 设计理念 观察者模式 Observable lambdas MD
    retrofit okhttp RxJava bk Gson Lambda 综合示例【配置】
  • 原文地址:https://www.cnblogs.com/adao21/p/13393134.html
Copyright © 2011-2022 走看看