| | |
| | | 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 + "行字符串", |
| | | "" |
| | | }); |
| | | } |
| | |
| | | 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")); |
| | |
| | | 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()); // 鼠标恢复默认形状 |
| | | } |
| | | }); |
| | | |
| | |
| | | } |
| | | |
| | | private void readParameters() { |
| | | // 读取参数逻辑 |
| | | // 读取参数逻辑 |
| | | JOptionPane.showMessageDialog(this, |
| | | getString("read.parameters") + " - " + getString("function.not.implemented"), |
| | | getString("prompt"), |
| | |
| | | } |
| | | |
| | | 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); |
| | |
| | | } |
| | | |
| | | private void restartDevice() { |
| | | // 重启设备逻辑 |
| | | // 重启设备逻辑 |
| | | int result = JOptionPane.showConfirmDialog(this, |
| | | getString("confirm.restart.device"), |
| | | getString("restart.device"), |
| | |
| | | } |
| | | |
| | | private void resetFactory() { |
| | | // 恢复出厂设置逻辑 |
| | | // 恢复出厂设置逻辑 |
| | | int result = JOptionPane.showConfirmDialog(this, |
| | | getString("confirm.reset.factory"), |
| | | getString("reset.factory"), |
| | |
| | | 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, |
| | |
| | | } |
| | | |
| | | 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") |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取表格数据 |
| | | * @return 包含所有行数据的二维数组 |
| | | * 获取表格数据 |
| | | * @return 包含所有行数据的二维数组 |
| | | */ |
| | | public Object[][] getTableData() { |
| | | int rowCount = tableModel.getRowCount(); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 设置表格数据 |
| | | * @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()) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 设置指定行的数据 |
| | | * @param row 行索引 |
| | | * @param rowData 行数据数组 |
| | | * 设置指定行的数据 |
| | | * @param row 行索引 |
| | | * @param rowData 行数据数组 |
| | | */ |
| | | public void setRowData(int row, Object[] rowData) { |
| | | if (row >= 0 && row < tableModel.getRowCount() && rowData != null) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取表格行数 |
| | | * @return 行数 |
| | | * 获取表格行数 |
| | | * @return 行数 |
| | | */ |
| | | public int getRowCount() { |
| | | return tableModel.getRowCount(); |
| | | } |
| | | |
| | | /** |
| | | * 获取表格列数 |
| | | * @return 列数 |
| | | * 获取表格列数 |
| | | * @return 列数 |
| | | */ |
| | | public int getColumnCount() { |
| | | return tableModel.getColumnCount(); |