From f38ba0a0bf5cbe96c9300247923f6979a5059529 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期二, 23 十二月 2025 19:09:07 +0800
Subject: [PATCH] 解决了异形无障碍物边界路径bug,另外优化了首页显示效果
---
src/dikuai/Dikuaiguanli.java | 75 ++++++++++++++++++++-----------------
1 files changed, 41 insertions(+), 34 deletions(-)
diff --git a/src/dikuai/Dikuaiguanli.java b/src/dikuai/Dikuaiguanli.java
index 70bc5b1..dc9a431 100644
--- a/src/dikuai/Dikuaiguanli.java
+++ b/src/dikuai/Dikuaiguanli.java
@@ -20,6 +20,7 @@
import java.util.Collections;
import java.util.Objects;
import java.util.Properties;
+import java.util.Locale;
import lujing.Lunjingguihua;
import lujing.MowingPathGenerationPage;
@@ -271,14 +272,17 @@
contentPanel.add(mowingPatternPanel);
contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
- // 鍓茶崏鏈哄壊鍒�瀹藉害
+ // 鍓茶崏鏈哄壊鍒�瀹藉害锛堝崟浣嶏細绫筹紝淇濈暀2浣嶅皬鏁帮級
String mowingBladeWidthValue = dikuai.getMowingBladeWidth();
String displayBladeWidth = "鏈缃�";
if (mowingBladeWidthValue != null && !"-1".equals(mowingBladeWidthValue) && !mowingBladeWidthValue.trim().isEmpty()) {
try {
double bladeWidthMeters = Double.parseDouble(mowingBladeWidthValue.trim());
- double bladeWidthCm = bladeWidthMeters * 100.0;
- displayBladeWidth = String.format("%.2f鍘樼背", bladeWidthCm);
+ // 濡傛灉鍊煎ぇ浜�100锛岃涓烘槸鍘樼背锛岄渶瑕佽浆鎹负绫�
+ if (bladeWidthMeters > 100) {
+ bladeWidthMeters = bladeWidthMeters / 100.0;
+ }
+ displayBladeWidth = String.format(Locale.US, "%.2fm", bladeWidthMeters);
} catch (NumberFormatException e) {
displayBladeWidth = "鏈缃�";
}
@@ -287,10 +291,18 @@
contentPanel.add(mowingBladeWidthPanel);
contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+ // 鍓茶崏瀹藉害锛堝崟浣嶏細绫筹紝淇濈暀2浣嶅皬鏁帮級
String mowingWidthValue = dikuai.getMowingWidth();
String displayWidth = "鏈缃�";
if (mowingWidthValue != null && !"-1".equals(mowingWidthValue) && !mowingWidthValue.trim().isEmpty()) {
- displayWidth = mowingWidthValue + "鍘樼背";
+ try {
+ double widthCm = Double.parseDouble(mowingWidthValue.trim());
+ // 灏嗗帢绫宠浆鎹负绫筹紝淇濈暀2浣嶅皬鏁�
+ double widthMeters = widthCm / 100.0;
+ displayWidth = String.format(Locale.US, "%.2fm", widthMeters);
+ } catch (NumberFormatException e) {
+ displayWidth = "鏈缃�";
+ }
}
JPanel mowingWidthPanel = createCardInfoItem("鍓茶崏瀹藉害:", displayWidth);
contentPanel.add(mowingWidthPanel);
@@ -306,7 +318,7 @@
if (distanceMeters > 100) {
distanceMeters = distanceMeters / 100.0;
}
- displaySafetyDistance = String.format("%.2f绫�", distanceMeters);
+ displaySafetyDistance = String.format(Locale.US, "%.2fm", distanceMeters);
} catch (NumberFormatException e) {
displaySafetyDistance = "鏈缃�";
}
@@ -337,8 +349,9 @@
contentPanel.add(obstaclePanel);
contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
- // 鍦板潡杈圭晫鍧愭爣锛堝甫鏄剧ず椤剁偣鎸夐挳锛�
- JPanel boundaryPanel = createBoundaryInfoItem(dikuai);
+ // 鍦板潡杈圭晫鍧愭爣锛堝甫鏌ョ湅鎸夐挳锛�
+ JPanel boundaryPanel = createCardInfoItemWithIconButton("鍦板潡杈圭晫:",
+ createViewButton(e -> editBoundaryCoordinates(dikuai)));
configureInteractiveLabel(getInfoItemTitleLabel(boundaryPanel),
() -> editBoundaryCoordinates(dikuai),
"鐐瑰嚮鏌ョ湅/缂栬緫鍦板潡杈圭晫鍧愭爣");
@@ -362,14 +375,6 @@
contentPanel.add(baseStationPanel);
contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
- JPanel boundaryOriginalPanel = createCardInfoItemWithIconButton("杈圭晫鍘熷鍧愭爣:",
- createViewButton(e -> editBoundaryOriginalCoordinates(dikuai)));
- configureInteractiveLabel(getInfoItemTitleLabel(boundaryOriginalPanel),
- () -> editBoundaryOriginalCoordinates(dikuai),
- "鐐瑰嚮鏌ョ湅/缂栬緫杈圭晫鍘熷鍧愭爣");
- contentPanel.add(boundaryOriginalPanel);
- contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
-
JPanel completedTrackPanel = createCardInfoItemWithButton("宸插畬鎴愬壊鑽夎矾寰�:",
getTruncatedValue(dikuai.getMowingTrack(), 12, "鏈褰�"),
createViewButton(e -> showCompletedMowingTrackDialog(dikuai)));
@@ -1035,17 +1040,35 @@
if (dikuai == null) {
return;
}
- String edited = promptCoordinateEditing("鏌ョ湅 / 缂栬緫鍦板潡杈圭晫鍧愭爣", dikuai.getBoundaryCoordinates());
+ Window owner = SwingUtilities.getWindowAncestor(this);
+
+ // 鑾峰彇鍦板潡绠$悊瀵硅瘽妗嗭紝鍑嗗鍦ㄦ墦寮�杈圭晫缂栬緫椤甸潰鏃跺叧闂�
+ Window managementWindow = null;
+ if (owner instanceof JDialog) {
+ managementWindow = owner;
+ }
+
+ // 鎵撳紑杈圭晫缂栬緫椤甸潰
+ Dikuanbianjipage page = new Dikuanbianjipage(owner, "杈圭晫绠$悊椤甸潰", dikuai.getBoundaryCoordinates(), dikuai);
+ page.setVisible(true);
+
+ // 鍏抽棴鍦板潡绠$悊椤甸潰
+ if (managementWindow != null) {
+ managementWindow.dispose();
+ }
+
+ // 鑾峰彇缂栬緫缁撴灉骞朵繚瀛�
+ String edited = page.getResult();
if (edited == null) {
return;
}
String normalized = normalizeCoordinateInput(edited);
if (!saveFieldAndRefresh(dikuai, "boundaryCoordinates", normalized)) {
- JOptionPane.showMessageDialog(this, "鏃犳硶鏇存柊鍦板潡杈圭晫鍧愭爣", "閿欒", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(null, "鏃犳硶鏇存柊鍦板潡杈圭晫鍧愭爣", "閿欒", JOptionPane.ERROR_MESSAGE);
return;
}
String message = "-1".equals(normalized) ? "鍦板潡杈圭晫鍧愭爣宸叉竻绌�" : "鍦板潡杈圭晫鍧愭爣宸叉洿鏂�";
- JOptionPane.showMessageDialog(this, message, "鎴愬姛", JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(null, message, "鎴愬姛", JOptionPane.INFORMATION_MESSAGE);
}
private void editPlannedPath(Dikuai dikuai) {
@@ -1082,22 +1105,6 @@
JOptionPane.showMessageDialog(this, message, "鎴愬姛", JOptionPane.INFORMATION_MESSAGE);
}
- private void editBoundaryOriginalCoordinates(Dikuai dikuai) {
- if (dikuai == null) {
- return;
- }
- String edited = promptCoordinateEditing("鏌ョ湅 / 缂栬緫杈圭晫鍘熷鍧愭爣", dikuai.getBoundaryOriginalCoordinates());
- if (edited == null) {
- return;
- }
- String normalized = normalizeCoordinateInput(edited);
- if (!saveFieldAndRefresh(dikuai, "boundaryOriginalCoordinates", normalized)) {
- JOptionPane.showMessageDialog(this, "鏃犳硶鏇存柊杈圭晫鍘熷鍧愭爣", "閿欒", JOptionPane.ERROR_MESSAGE);
- return;
- }
- String message = "-1".equals(normalized) ? "杈圭晫鍘熷鍧愭爣宸叉竻绌�" : "杈圭晫鍘熷鍧愭爣宸叉洿鏂�";
- JOptionPane.showMessageDialog(this, message, "鎴愬姛", JOptionPane.INFORMATION_MESSAGE);
- }
private void editMowingPattern(Dikuai dikuai) {
if (dikuai == null) {
--
Gitblit v1.10.0