| | |
| | | mainPanel.add(scrollPane, BorderLayout.CENTER); |
| | | |
| | | add(mainPanel, BorderLayout.CENTER); |
| | | |
| | | setupEventHandlers(); |
| | | } |
| | | |
| | | private JPanel createSettingsPanel() { |
| | |
| | | return trimmed; |
| | | } |
| | | |
| | | private void addActionListenerUnique(JButton button, ActionListener listener) { |
| | | if (button == null) return; |
| | | for (ActionListener al : button.getActionListeners()) { |
| | | button.removeActionListener(al); |
| | | } |
| | | button.addActionListener(listener); |
| | | } |
| | | |
| | | private void setupEventHandlers() { |
| | | // 割草机编号编辑按钮事件 |
| | | if (mowerIdEditBtn != null) { |
| | | mowerIdEditBtn.addActionListener(e -> editMowerId()); |
| | | } |
| | | addActionListenerUnique(mowerIdEditBtn, e -> editMowerId()); |
| | | |
| | | // 割草机长宽编辑按钮事件 |
| | | if (mowerSizeEditBtn != null) { |
| | | mowerSizeEditBtn.addActionListener(e -> editMowerSize()); |
| | | } |
| | | addActionListenerUnique(mowerSizeEditBtn, e -> editMowerSize()); |
| | | |
| | | // 割草安全距离编辑按钮事件 |
| | | if (mowingSafetyDistanceEditBtn != null) { |
| | | mowingSafetyDistanceEditBtn.addActionListener(e -> editMowingSafetyDistance()); |
| | | } |
| | | addActionListenerUnique(mowingSafetyDistanceEditBtn, e -> editMowingSafetyDistance()); |
| | | |
| | | if (baseStationIdEditBtn != null) { |
| | | baseStationIdEditBtn.addActionListener(e -> editBaseStationId()); |
| | | } |
| | | addActionListenerUnique(baseStationIdEditBtn, e -> editBaseStationId()); |
| | | |
| | | // 检查更新按钮事件 |
| | | if (checkUpdateBtn != null) { |
| | | checkUpdateBtn.addActionListener(e -> checkForUpdates()); |
| | | } |
| | | addActionListenerUnique(checkUpdateBtn, e -> checkForUpdates()); |
| | | |
| | | if (handheldEditBtn != null) { |
| | | handheldEditBtn.addActionListener(e -> editHandheldMarkerId()); |
| | | } |
| | | addActionListenerUnique(handheldEditBtn, e -> editHandheldMarkerId()); |
| | | |
| | | if (feedbackButton != null) { |
| | | feedbackButton.addActionListener(e -> showFeedbackDialog()); |
| | | } |
| | | addActionListenerUnique(feedbackButton, e -> showFeedbackDialog()); |
| | | |
| | | if (idleTrailEditBtn != null) { |
| | | idleTrailEditBtn.addActionListener(e -> editIdleTrailDuration()); |
| | | } |
| | | |
| | | addActionListenerUnique(idleTrailEditBtn, e -> editIdleTrailDuration()); |
| | | } |
| | | |
| | | private void editMowerId() { |
| | |
| | | @Override |
| | | public void setVisible(boolean visible) { |
| | | if (visible) { |
| | | setupEventHandlers(); |
| | | loadData(); // 每次显示时重新加载数据 |
| | | } |
| | | super.setVisible(visible); |