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