From a3b05960fe629e9006b45d61618b01f724e757fd Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期五, 19 十二月 2025 17:41:08 +0800
Subject: [PATCH] 美化了地块管理的排版
---
src/dikuai/Dikuaiguanli.java | 130 +++++++++++++++++++++---------------------
1 files changed, 65 insertions(+), 65 deletions(-)
diff --git a/src/dikuai/Dikuaiguanli.java b/src/dikuai/Dikuaiguanli.java
index 2c6f253..b70c499 100644
--- a/src/dikuai/Dikuaiguanli.java
+++ b/src/dikuai/Dikuaiguanli.java
@@ -72,7 +72,7 @@
private ImageIcon workUnselectedIcon;
private ImageIcon boundaryVisibleIcon;
private ImageIcon boundaryHiddenIcon;
- private static final int BOUNDARY_TOGGLE_ICON_SIZE = 48;
+ private static final int BOUNDARY_TOGGLE_ICON_SIZE = 24;
private Map<String, ObstacleSummary> obstacleSummaryCache = Collections.emptyMap();
public Dikuaiguanli(String landNumber) {
@@ -166,7 +166,7 @@
for (Dikuai dikuai : allDikuai.values()) {
JPanel card = createDikuaiCard(dikuai);
cardsPanel.add(card);
- cardsPanel.add(Box.createRigidArea(new Dimension(0, 15)));
+ cardsPanel.add(Box.createRigidArea(new Dimension(0, 10)));
}
}
@@ -246,11 +246,11 @@
// 鍦板潡缂栧彿
contentPanel.add(createCardInfoItem("鍦板潡缂栧彿:", getDisplayValue(dikuai.getLandNumber(), "鏈煡")));
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
// 娣诲姞鏃堕棿
contentPanel.add(createCardInfoItem("娣诲姞鏃堕棿:", getDisplayValue(dikuai.getCreateTime(), "鏈煡")));
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
// 鍦板潡闈㈢Н
String landArea = dikuai.getLandArea();
@@ -260,59 +260,7 @@
landArea = "鏈煡";
}
contentPanel.add(createCardInfoItem("鍦板潡闈㈢Н:", landArea));
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
-
- // 杩斿洖鐐瑰潗鏍囷紙甯︿慨鏀规寜閽級
- contentPanel.add(createCardInfoItemWithButton("杩斿洖鐐瑰潗鏍�:",
- getDisplayValue(dikuai.getReturnPointCoordinates(), "鏈缃�"),
- "淇敼", e -> editReturnPoint(dikuai)));
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
-
- // 鍦板潡杈圭晫鍧愭爣锛堝甫鏄剧ず椤剁偣鎸夐挳锛�
- JPanel boundaryPanel = createBoundaryInfoItem(dikuai);
- configureInteractiveLabel(getInfoItemTitleLabel(boundaryPanel),
- () -> editBoundaryCoordinates(dikuai),
- "鐐瑰嚮鏌ョ湅/缂栬緫鍦板潡杈圭晫鍧愭爣");
- contentPanel.add(boundaryPanel);
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
-
- ObstacleSummary obstacleSummary = getObstacleSummaryFromCache(dikuai.getLandNumber());
- JPanel obstaclePanel = createCardInfoItemWithButton("闅滅鐗�:",
- obstacleSummary.buildDisplayValue(),
- "鏂板",
- e -> addNewObstacle(dikuai));
- setInfoItemTooltip(obstaclePanel, obstacleSummary.buildTooltip());
- // 璁╅殰纰嶇墿鏍囬鍙偣鍑伙紝鎵撳紑闅滅鐗╃鐞嗛〉闈�
- configureInteractiveLabel(getInfoItemTitleLabel(obstaclePanel),
- () -> showObstacleManagementPage(dikuai),
- "鐐瑰嚮鏌ョ湅/绠$悊闅滅鐗�");
- contentPanel.add(obstaclePanel);
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
-
- // 璺緞鍧愭爣锛堝甫鏌ョ湅鎸夐挳锛�
- JPanel pathPanel = createCardInfoItemWithButtonOnly("璺緞鍧愭爣:",
- "鏌ョ湅", e -> editPlannedPath(dikuai));
- configureInteractiveLabel(getInfoItemTitleLabel(pathPanel),
- () -> editPlannedPath(dikuai),
- "鐐瑰嚮鏌ョ湅/缂栬緫璺緞鍧愭爣");
- contentPanel.add(pathPanel);
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
-
- JPanel baseStationPanel = createCardInfoItemWithButtonOnly("鍩虹珯鍧愭爣:",
- "鏌ョ湅", e -> editBaseStationCoordinates(dikuai));
- configureInteractiveLabel(getInfoItemTitleLabel(baseStationPanel),
- () -> editBaseStationCoordinates(dikuai),
- "鐐瑰嚮鏌ョ湅/缂栬緫鍩虹珯鍧愭爣");
- contentPanel.add(baseStationPanel);
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
-
- JPanel boundaryOriginalPanel = createCardInfoItemWithButtonOnly("杈圭晫鍘熷鍧愭爣:",
- "鏌ョ湅", e -> editBoundaryOriginalCoordinates(dikuai));
- configureInteractiveLabel(getInfoItemTitleLabel(boundaryOriginalPanel),
- () -> editBoundaryOriginalCoordinates(dikuai),
- "鐐瑰嚮鏌ョ湅/缂栬緫杈圭晫鍘熷鍧愭爣");
- contentPanel.add(boundaryOriginalPanel);
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
JPanel mowingPatternPanel = createCardInfoItem("鍓茶崏妯″紡:",
formatMowingPatternForDisplay(dikuai.getMowingPattern()));
@@ -320,7 +268,7 @@
() -> editMowingPattern(dikuai),
"鐐瑰嚮鏌ョ湅/缂栬緫鍓茶崏妯″紡");
contentPanel.add(mowingPatternPanel);
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
// 鍓茶崏鏈哄壊鍒�瀹藉害
String mowingBladeWidthValue = dikuai.getMowingBladeWidth();
@@ -336,7 +284,7 @@
}
JPanel mowingBladeWidthPanel = createCardInfoItem("鍓茶崏鏈哄壊鍒�瀹藉害:", displayBladeWidth);
contentPanel.add(mowingBladeWidthPanel);
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
String mowingWidthValue = dikuai.getMowingWidth();
String displayWidth = "鏈缃�";
@@ -345,7 +293,7 @@
}
JPanel mowingWidthPanel = createCardInfoItem("鍓茶崏瀹藉害:", displayWidth);
contentPanel.add(mowingWidthPanel);
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
// 鍓茶崏瀹夊叏璺濈
String displaySafetyDistance = "鏈缃�";
@@ -367,7 +315,59 @@
}
JPanel mowingSafetyDistancePanel = createCardInfoItem("鍓茶崏瀹夊叏璺濈:", displaySafetyDistance);
contentPanel.add(mowingSafetyDistancePanel);
- contentPanel.add(Box.createRigidArea(new Dimension(0, 15)));
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+
+ // 杩斿洖鐐瑰潗鏍囷紙甯︿慨鏀规寜閽級
+ contentPanel.add(createCardInfoItemWithButton("杩斿洖鐐瑰潗鏍�:",
+ getDisplayValue(dikuai.getReturnPointCoordinates(), "鏈缃�"),
+ "淇敼", e -> editReturnPoint(dikuai)));
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+
+ ObstacleSummary obstacleSummary = getObstacleSummaryFromCache(dikuai.getLandNumber());
+ JPanel obstaclePanel = createCardInfoItemWithButton("闅滅鐗�:",
+ obstacleSummary.buildDisplayValue(),
+ "鏂板",
+ e -> addNewObstacle(dikuai));
+ setInfoItemTooltip(obstaclePanel, obstacleSummary.buildTooltip());
+ // 璁╅殰纰嶇墿鏍囬鍙偣鍑伙紝鎵撳紑闅滅鐗╃鐞嗛〉闈�
+ configureInteractiveLabel(getInfoItemTitleLabel(obstaclePanel),
+ () -> showObstacleManagementPage(dikuai),
+ "鐐瑰嚮鏌ョ湅/绠$悊闅滅鐗�");
+ contentPanel.add(obstaclePanel);
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+
+ // 鍦板潡杈圭晫鍧愭爣锛堝甫鏄剧ず椤剁偣鎸夐挳锛�
+ JPanel boundaryPanel = createBoundaryInfoItem(dikuai);
+ configureInteractiveLabel(getInfoItemTitleLabel(boundaryPanel),
+ () -> editBoundaryCoordinates(dikuai),
+ "鐐瑰嚮鏌ョ湅/缂栬緫鍦板潡杈圭晫鍧愭爣");
+ contentPanel.add(boundaryPanel);
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+
+ // 璺緞鍧愭爣锛堝甫鏌ョ湅鎸夐挳锛�
+ JPanel pathPanel = createCardInfoItemWithButtonOnly("璺緞鍧愭爣:",
+ "鏌ョ湅", e -> editPlannedPath(dikuai));
+ configureInteractiveLabel(getInfoItemTitleLabel(pathPanel),
+ () -> editPlannedPath(dikuai),
+ "鐐瑰嚮鏌ョ湅/缂栬緫璺緞鍧愭爣");
+ contentPanel.add(pathPanel);
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+
+ JPanel baseStationPanel = createCardInfoItemWithButtonOnly("鍩虹珯鍧愭爣:",
+ "鏌ョ湅", e -> editBaseStationCoordinates(dikuai));
+ configureInteractiveLabel(getInfoItemTitleLabel(baseStationPanel),
+ () -> editBaseStationCoordinates(dikuai),
+ "鐐瑰嚮鏌ョ湅/缂栬緫鍩虹珯鍧愭爣");
+ contentPanel.add(baseStationPanel);
+ contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+
+ JPanel boundaryOriginalPanel = createCardInfoItemWithButtonOnly("杈圭晫鍘熷鍧愭爣:",
+ "鏌ョ湅", 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, "鏈褰�"),
@@ -487,12 +487,12 @@
private JPanel createBoundaryInfoItem(Dikuai dikuai) {
JPanel itemPanel = new JPanel(new BorderLayout());
itemPanel.setBackground(CARD_BACKGROUND);
- // 澧炲姞楂樺害浠ョ‘淇濇寜閽笅杈圭紭瀹屾暣鏄剧ず锛堟寜閽珮搴�56锛屽姞涓婁笂涓嬭竟璺濓級
- int rowHeight = Math.max(60, BOUNDARY_TOGGLE_ICON_SIZE + 16);
+ // 澧炲姞楂樺害浠ョ‘淇濇寜閽笅杈圭紭瀹屾暣鏄剧ず锛堟寜閽珮搴�28锛屽姞涓婁笂涓嬭竟璺濓級
+ int rowHeight = Math.max(30, BOUNDARY_TOGGLE_ICON_SIZE + 8);
Dimension rowDimension = new Dimension(Integer.MAX_VALUE, rowHeight);
itemPanel.setMaximumSize(rowDimension);
itemPanel.setPreferredSize(rowDimension);
- itemPanel.setMinimumSize(new Dimension(0, 56));
+ itemPanel.setMinimumSize(new Dimension(0, 28));
JLabel labelComp = new JLabel("鍦板潡杈圭晫:");
labelComp.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 14));
@@ -537,7 +537,7 @@
button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
button.setMargin(new Insets(0, 0, 0, 0));
button.setIconTextGap(0);
- button.setPreferredSize(new Dimension(56, 56));
+ button.setPreferredSize(new Dimension(28, 28));
String landNumber = dikuai.getLandNumber();
boolean isVisible = boundaryPointVisibility.getOrDefault(landNumber, false);
--
Gitblit v1.10.0