package home;
|
|
import javax.swing.*;
|
import javax.swing.table.DefaultTableModel;
|
import javax.swing.table.TableColumn;
|
import java.awt.*;
|
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseEvent;
|
|
public class ParameterTablePanel extends JPanel {
|
private static final long serialVersionUID = 1L;
|
private MainFrame mainFrame;
|
private JTable parameterTable;
|
private DefaultTableModel tableModel;
|
private JButton readBtn, saveBtn, restartBtn, resetBtn;
|
|
public ParameterTablePanel(MainFrame mainFrame) {
|
this.mainFrame = mainFrame;
|
initializeUI();
|
}
|
|
private void initializeUI() {
|
setLayout(new BorderLayout());
|
setBorder(BorderFactory.createTitledBorder(getString("base.parameters")));
|
|
// ´´½¨±í¸ñÁÐÃû
|
String[] columnNames = {
|
getString("parameter.name"),
|
getString("parameter.value")
|
};
|
|
// ´´½¨±í¸ñÄ£ÐÍ£¬Ä¬ÈÏ20ÐÐÊý¾Ý
|
tableModel = new DefaultTableModel(columnNames, 0) {
|
private static final long serialVersionUID = 1L;
|
|
@Override
|
public boolean isCellEditable(int row, int column) {
|
// Ö»ÓвÎÊýÖµÁпɱà¼
|
return column == 1;
|
}
|
};
|
|
// Ìí¼Ó20ÐÐĬÈÏÊý¾Ý
|
for (int i = 1; i <= 20; i++) {
|
tableModel.addRow(new Object[]{
|
"µÚ" + i + "ÐÐ×Ö·û´®",
|
""
|
});
|
}
|
|
parameterTable = new JTable(tableModel);
|
parameterTable.setRowHeight(25);
|
|
// ÉèÖÃÁпí
|
TableColumn column;
|
column = parameterTable.getColumnModel().getColumn(0);
|
column.setPreferredWidth(90); // µÚ1Áпí90ÏñËØ
|
|
column = parameterTable.getColumnModel().getColumn(1);
|
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"));
|
restartBtn = createStyledButton(getString("restart.device"));
|
resetBtn = createStyledButton(getString("reset.factory"));
|
|
buttonPanel.add(readBtn);
|
buttonPanel.add(saveBtn);
|
buttonPanel.add(restartBtn);
|
buttonPanel.add(resetBtn);
|
|
add(scrollPane, BorderLayout.CENTER);
|
add(buttonPanel, BorderLayout.SOUTH);
|
|
// Ìí¼Óʼþ¼àÌý
|
setupEventListeners();
|
}
|
|
/**
|
* ´´½¨Ñùʽ°´Å¥£¨²Î¿¼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.setFocusPainted(false);
|
button.setOpaque(true);
|
button.setBorderPainted(false);
|
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)); // Êó±ê±äΪÊÖÐÍ
|
}
|
|
@Override
|
public void mouseExited(MouseEvent e) {
|
button.setBackground(new Color(0, 120, 215)); // Êó±êÀ뿪ʱ»Ö¸´À¶É«
|
button.setCursor(Cursor.getDefaultCursor()); // Êó±ê»Ö¸´Ä¬ÈÏÐÎ×´
|
}
|
});
|
|
return button;
|
}
|
|
private void setupEventListeners() {
|
readBtn.addActionListener(e -> readParameters());
|
saveBtn.addActionListener(e -> saveParameters());
|
restartBtn.addActionListener(e -> restartDevice());
|
resetBtn.addActionListener(e -> resetFactory());
|
}
|
|
private void readParameters() {
|
// ¶ÁÈ¡²ÎÊýÂß¼
|
JOptionPane.showMessageDialog(this,
|
getString("read.parameters") + " - " + getString("function.not.implemented"),
|
getString("prompt"),
|
JOptionPane.INFORMATION_MESSAGE);
|
}
|
|
private void saveParameters() {
|
// ±£´æ²ÎÊýÂß¼
|
StringBuilder savedData = new StringBuilder();
|
savedData.append("±£´æµÄ²ÎÊý£º\n");
|
|
for (int i = 0; i < tableModel.getRowCount(); i++) {
|
String paramName = (String) tableModel.getValueAt(i, 0);
|
String paramValue = (String) tableModel.getValueAt(i, 1);
|
savedData.append(paramName).append(": ").append(paramValue).append("\n");
|
}
|
|
JOptionPane.showMessageDialog(this,
|
savedData.toString(),
|
getString("save.parameters"),
|
JOptionPane.INFORMATION_MESSAGE);
|
}
|
|
private void restartDevice() {
|
// ÖØÆôÉ豸Âß¼
|
int result = JOptionPane.showConfirmDialog(this,
|
getString("confirm.restart.device"),
|
getString("restart.device"),
|
JOptionPane.YES_NO_OPTION);
|
|
if (result == JOptionPane.YES_OPTION) {
|
JOptionPane.showMessageDialog(this,
|
getString("device.restarting"),
|
getString("prompt"),
|
JOptionPane.INFORMATION_MESSAGE);
|
}
|
}
|
|
private void resetFactory() {
|
// »Ö¸´³ö³§ÉèÖÃÂß¼
|
int result = JOptionPane.showConfirmDialog(this,
|
getString("confirm.reset.factory"),
|
getString("reset.factory"),
|
JOptionPane.YES_NO_OPTION,
|
JOptionPane.WARNING_MESSAGE);
|
|
if (result == JOptionPane.YES_OPTION) {
|
// ÖØÖñí¸ñÊý¾Ý
|
for (int i = 0; i < tableModel.getRowCount(); i++) {
|
tableModel.setValueAt("", i, 1); // Çå¿Õ²ÎÊýÖµ
|
}
|
|
JOptionPane.showMessageDialog(this,
|
getString("factory.reset.completed"),
|
getString("prompt"),
|
JOptionPane.INFORMATION_MESSAGE);
|
}
|
}
|
|
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")
|
};
|
tableModel.setColumnIdentifiers(columnNames);
|
|
revalidate();
|
repaint();
|
}
|
|
private String getString(String key) {
|
return mainFrame.getString(key);
|
}
|
|
/**
|
* »ñÈ¡±í¸ñÊý¾Ý
|
* @return °üº¬ËùÓÐÐÐÊý¾ÝµÄ¶þάÊý×é
|
*/
|
public Object[][] getTableData() {
|
int rowCount = tableModel.getRowCount();
|
int colCount = tableModel.getColumnCount();
|
Object[][] data = new Object[rowCount][colCount];
|
|
for (int i = 0; i < rowCount; i++) {
|
for (int j = 0; j < colCount; j++) {
|
data[i][j] = tableModel.getValueAt(i, j);
|
}
|
}
|
return data;
|
}
|
|
/**
|
* ÉèÖñí¸ñÊý¾Ý
|
* @param data ÒªÉèÖõÄÊý¾Ý
|
*/
|
public void setTableData(Object[][] data) {
|
tableModel.setRowCount(0); // Çå¿ÕÏÖÓÐÊý¾Ý
|
for (Object[] row : data) {
|
tableModel.addRow(row);
|
}
|
}
|
|
/**
|
* »ñȡָ¶¨ÐеÄÊý¾Ý
|
* @param row ÐÐË÷Òý
|
* @return ¸ÃÐеÄÊý¾ÝÊý×é
|
*/
|
public Object[] getRowData(int row) {
|
if (row >= 0 && row < tableModel.getRowCount()) {
|
Object[] rowData = new Object[tableModel.getColumnCount()];
|
for (int i = 0; i < tableModel.getColumnCount(); i++) {
|
rowData[i] = tableModel.getValueAt(row, i);
|
}
|
return rowData;
|
}
|
return null;
|
}
|
|
/**
|
* ÉèÖÃÖ¸¶¨ÐеÄÊý¾Ý
|
* @param row ÐÐË÷Òý
|
* @param rowData ÐÐÊý¾ÝÊý×é
|
*/
|
public void setRowData(int row, Object[] rowData) {
|
if (row >= 0 && row < tableModel.getRowCount() && rowData != null) {
|
for (int i = 0; i < Math.min(tableModel.getColumnCount(), rowData.length); i++) {
|
tableModel.setValueAt(rowData[i], row, i);
|
}
|
}
|
}
|
|
/**
|
* »ñÈ¡±í¸ñÐÐÊý
|
* @return ÐÐÊý
|
*/
|
public int getRowCount() {
|
return tableModel.getRowCount();
|
}
|
|
/**
|
* »ñÈ¡±í¸ñÁÐÊý
|
* @return ÁÐÊý
|
*/
|
public int getColumnCount() {
|
return tableModel.getColumnCount();
|
}
|
}
|