张世豪
2 天以前 6b1447fb1794e08f8e5f580b83ae5eabe4e617d8
src/denglu/Denglu.java
@@ -3,6 +3,11 @@
import homein.WenJianSuo;
import ui.UIConfig;
import zhuye.Shouye;
import gecaoji.Device;
import chuankou.SerialPortNativeLoader;
import set.Setsys;
import udpdell.UDPServer;
import user.Usrdell;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
@@ -151,11 +156,17 @@
        // 主表单区域
        JPanel formPanel = createFormPanel();
        
        // 包装在滚动窗格中,以防内容显示不全
        JScrollPane scrollPane = new JScrollPane(formPanel);
        scrollPane.setBorder(null);
        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        scrollPane.getVerticalScrollBar().setUnitIncrement(16);
        // 底部应用信息
        JPanel appInfoPanel = createAppInfoPanel();
        
        mainPanel.add(topPanel, BorderLayout.NORTH);
        mainPanel.add(formPanel, BorderLayout.CENTER);
        mainPanel.add(scrollPane, BorderLayout.CENTER);
        mainPanel.add(appInfoPanel, BorderLayout.SOUTH);
        
        add(mainPanel);
@@ -430,10 +441,17 @@
            usernameField.setText("");
        }
        
        // 如果密码为-1,清空密码框
        String savedPassword = UserChuShiHua.getProperty("password");
        if (savedPassword != null && savedPassword.equals("-1")) {
            passwordField.setText("");
        // 加载记住我状态
        String rememberPwd = UserChuShiHua.getProperty("rememberPassword");
        boolean isRemember = "1".equals(rememberPwd);
        rememberMe.setSelected(isRemember);
        // 如果记住我被选中,填充密码
        if (isRemember) {
             String savedPassword = UserChuShiHua.getProperty("password");
             if (savedPassword != null && !savedPassword.equals("-1")) {
                 passwordField.setText(savedPassword);
             }
        }
    }
@@ -473,20 +491,18 @@
        
        // 验证用户名和密码
        if (validateLogin(username, password)) {
            JOptionPane.showMessageDialog(this,
                "登录成功!",
                "成功",
                JOptionPane.INFORMATION_MESSAGE);
            // 更新最后登录时间
            UserChuShiHua.updateProperty("lastLoginTime", String.valueOf(System.currentTimeMillis()));
            
            // 如果记住我被选中,保存用户名
            // 保存记住我状态
            if (rememberMe.isSelected()) {
                UserChuShiHua.updateProperty("rememberPassword", "1");
                UserChuShiHua.updateProperty("userName", username);
            } else {
                UserChuShiHua.updateProperty("rememberPassword", "0");
            }
            
            // 这里可以添加跳转到主界面的代码
            // 关闭登录窗口并打开首页
            openMainApplication();
            
        } else {
@@ -522,10 +538,10 @@
            Shouye homePanel = new Shouye();
            mainFrame.setContentPane(homePanel);
            mainFrame.pack();
            int targetWidth = Math.max(mainFrame.getWidth(), 480);
            int targetHeight = Math.max(mainFrame.getHeight(), 800);
            mainFrame.setSize(targetWidth, targetHeight);
            // 设置与登录页面相同的尺寸
            mainFrame.setSize(UIConfig.DIALOG_WIDTH, UIConfig.DIALOG_HEIGHT);
            mainFrame.setMinimumSize(new Dimension(UIConfig.DIALOG_WIDTH, UIConfig.DIALOG_HEIGHT));
            mainFrame.setResizable(false);
            mainFrame.setLocationRelativeTo(null);
            mainFrame.setVisible(true);
@@ -540,5 +556,63 @@
        RegistrationFrame registerFrame = new RegistrationFrame(this, currentLanguageCode);
        registerFrame.setVisible(true);
    }
    /**
     * 程序入口点
     * 集成Homein类的初始化逻辑
     */
    public static void main(String[] args) {
        // 检查程序是否已经运行
        if (WenJianSuo.isAlreadyRunning()) {
            JOptionPane.showMessageDialog(null,
                "程序已经在运行中!\n不能同时打开多个实例。",
                "警告",
                JOptionPane.WARNING_MESSAGE);
            System.exit(0);
            return;
        }
        // 添加关闭钩子,确保程序退出时释放锁
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            WenJianSuo.releaseLock();
        }));
        try {
            SerialPortNativeLoader.ensureLibraryPresent();
            // 初始化数据
            UserChuShiHua.initialize();
            Usrdell.initialize(); // 初始化用户属性
            Setsys setsys = new Setsys();
            setsys.initializeFromProperties();
            Device.initializeActiveDevice(setsys.getMowerId());
            UDPServer.startAsync();//启动数据接收线程
            // 显示初始数据
            System.out.println("初始用户名: " + UserChuShiHua.getProperty("userName"));
            System.out.println("初始密码: " + UserChuShiHua.getProperty("password"));
            // 启动登录界面
            EventQueue.invokeLater(() -> {
                try {
                    new Denglu().setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                    JOptionPane.showMessageDialog(null,
                        "登录界面启动失败: " + e.getMessage(),
                        "错误",
                        JOptionPane.ERROR_MESSAGE);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null,
                "程序启动失败: " + e.getMessage(),
                "错误",
                JOptionPane.ERROR_MESSAGE);
        }
    }
   
}