zsh_root
2025-12-10 8d662de2fd262b3a485f16e197cb4d0ca2a61cdf
src/home/ParameterTablePanel.java
@@ -23,27 +23,27 @@
        setLayout(new BorderLayout());
        setBorder(BorderFactory.createTitledBorder(getString("base.parameters")));
        
        // 创建表格列名
        // 创建表格列名
        String[] columnNames = {
            getString("parameter.name"),
            getString("parameter.value")
        };
        
        // 创建表格模型,默认20行数据
        // 创建表格模型,默认20行数据
        tableModel = new DefaultTableModel(columnNames, 0) {
            private static final long serialVersionUID = 1L;
            
            @Override
            public boolean isCellEditable(int row, int column) {
                // 只有参数值列可编辑
                // 只有参数值列可编辑
                return column == 1;
            }
        };
        
        // 添加20行默认数据
        // 添加20行默认数据
        for (int i = 1; i <= 20; i++) {
            tableModel.addRow(new Object[]{
                "第" + i + "行字符串",
                "第" + i + "行字符串",
                ""
            });
        }
@@ -51,17 +51,17 @@
        parameterTable = new JTable(tableModel);
        parameterTable.setRowHeight(25);
        
        // 设置列宽
        // 设置列宽
        TableColumn column;
        column = parameterTable.getColumnModel().getColumn(0);
        column.setPreferredWidth(90); // 第1列宽90像素
        column.setPreferredWidth(90); // 第1列宽90像素
        
        column = parameterTable.getColumnModel().getColumn(1);
        column.setPreferredWidth(100); // 第2列宽100像素
        column.setPreferredWidth(100); // 第2列宽100像素
        
        JScrollPane scrollPane = new JScrollPane(parameterTable);
        
        // 创建按钮面板
        // 创建按钮面板
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        readBtn = createStyledButton(getString("read.parameters"));
        saveBtn = createStyledButton(getString("save.parameters"));
@@ -76,43 +76,43 @@
        add(scrollPane, BorderLayout.CENTER);
        add(buttonPanel, BorderLayout.SOUTH);
        
        // 添加事件监听
        // 添加事件监听
        setupEventListeners();
    }
    
    /**
     * 创建样式按钮(参考SendPanel中的按钮设计)
     * @param text 按钮文本
     * @return 配置好样式的JButton
     * 创建样式按钮(参考SendPanel中的按钮设计)
     * @param text 按钮文本
     * @return 配置好样式的JButton
     */
    private JButton createStyledButton(String text) {
        JButton button = new JButton(text);
        button.setBackground(new Color(0, 120, 215)); // 蓝色背景
        button.setForeground(Color.WHITE); // 白色文字
        button.setBackground(new Color(0, 120, 215)); // 蓝色背景
        button.setForeground(Color.WHITE); // 白色文字
        button.setFocusPainted(false);
        button.setOpaque(true);
        button.setBorderPainted(false);
        button.setFont(button.getFont().deriveFont(Font.BOLD)); // 加粗字体
        button.setFont(button.getFont().deriveFont(Font.BOLD)); // 加粗字体
        
        // 设置固定高度
        // 设置固定高度
        Dimension preferredSize = button.getPreferredSize();
        Dimension newSize = new Dimension(preferredSize.width, 25);
        button.setPreferredSize(newSize);
        button.setMinimumSize(newSize);
        button.setMaximumSize(newSize);
        
        // 添加鼠标悬停效果
        // 添加鼠标悬停效果
        button.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                button.setBackground(Color.GRAY); // 鼠标悬停时变为灰色
                button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); // 鼠标变为手型
                button.setBackground(Color.GRAY); // 鼠标悬停时变为灰色
                button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); // 鼠标变为手型
            }
            
            @Override
            public void mouseExited(MouseEvent e) {
                button.setBackground(new Color(0, 120, 215)); // 鼠标离开时恢复蓝色
                button.setCursor(Cursor.getDefaultCursor()); // 鼠标恢复默认形状
                button.setBackground(new Color(0, 120, 215)); // 鼠标离开时恢复蓝色
                button.setCursor(Cursor.getDefaultCursor()); // 鼠标恢复默认形状
            }
        });
        
@@ -127,7 +127,7 @@
    }
    
    private void readParameters() {
        // 读取参数逻辑
        // 读取参数逻辑
        JOptionPane.showMessageDialog(this, 
            getString("read.parameters") + " - " + getString("function.not.implemented"),
            getString("prompt"), 
@@ -135,9 +135,9 @@
    }
    
    private void saveParameters() {
        // 保存参数逻辑
        // 保存参数逻辑
        StringBuilder savedData = new StringBuilder();
        savedData.append("保存的参数:\n");
        savedData.append("保存的参数:\n");
        
        for (int i = 0; i < tableModel.getRowCount(); i++) {
            String paramName = (String) tableModel.getValueAt(i, 0);
@@ -152,7 +152,7 @@
    }
    
    private void restartDevice() {
        // 重启设备逻辑
        // 重启设备逻辑
        int result = JOptionPane.showConfirmDialog(this,
            getString("confirm.restart.device"),
            getString("restart.device"),
@@ -167,7 +167,7 @@
    }
    
    private void resetFactory() {
        // 恢复出厂设置逻辑
        // 恢复出厂设置逻辑
        int result = JOptionPane.showConfirmDialog(this,
            getString("confirm.reset.factory"),
            getString("reset.factory"),
@@ -175,9 +175,9 @@
            JOptionPane.WARNING_MESSAGE);
            
        if (result == JOptionPane.YES_OPTION) {
            // 重置表格数据
            // 重置表格数据
            for (int i = 0; i < tableModel.getRowCount(); i++) {
                tableModel.setValueAt("", i, 1); // 清空参数值
                tableModel.setValueAt("", i, 1); // 清空参数值
            }
            
            JOptionPane.showMessageDialog(this,
@@ -188,16 +188,16 @@
    }
    
    public void updateLanguage() {
        // 更新边框标题
        // 更新边框标题
        setBorder(BorderFactory.createTitledBorder(getString("base.parameters")));
        
        // 更新按钮文本
        // 更新按钮文本
        readBtn.setText(getString("read.parameters"));
        saveBtn.setText(getString("save.parameters"));
        restartBtn.setText(getString("restart.device"));
        resetBtn.setText(getString("reset.factory"));
        
        // 更新表格列名
        // 更新表格列名
        String[] columnNames = {
            getString("parameter.name"),
            getString("parameter.value")
@@ -213,8 +213,8 @@
    }
    
    /**
     * 获取表格数据
     * @return 包含所有行数据的二维数组
     * 获取表格数据
     * @return 包含所有行数据的二维数组
     */
    public Object[][] getTableData() {
        int rowCount = tableModel.getRowCount();
@@ -230,20 +230,20 @@
    }
    
    /**
     * 设置表格数据
     * @param data 要设置的数据
     * 设置表格数据
     * @param data 要设置的数据
     */
    public void setTableData(Object[][] data) {
        tableModel.setRowCount(0); // 清空现有数据
        tableModel.setRowCount(0); // 清空现有数据
        for (Object[] row : data) {
            tableModel.addRow(row);
        }
    }
    
    /**
     * 获取指定行的数据
     * @param row 行索引
     * @return 该行的数据数组
     * 获取指定行的数据
     * @param row 行索引
     * @return 该行的数据数组
     */
    public Object[] getRowData(int row) {
        if (row >= 0 && row < tableModel.getRowCount()) {
@@ -257,9 +257,9 @@
    }
    
    /**
     * 设置指定行的数据
     * @param row 行索引
     * @param rowData 行数据数组
     * 设置指定行的数据
     * @param row 行索引
     * @param rowData 行数据数组
     */
    public void setRowData(int row, Object[] rowData) {
        if (row >= 0 && row < tableModel.getRowCount() && rowData != null) {
@@ -270,16 +270,16 @@
    }
    
    /**
     * 获取表格行数
     * @return 行数
     * 获取表格行数
     * @return 行数
     */
    public int getRowCount() {
        return tableModel.getRowCount();
    }
    
    /**
     * 获取表格列数
     * @return 列数
     * 获取表格列数
     * @return 列数
     */
    public int getColumnCount() {
        return tableModel.getColumnCount();