From 96f9630247478ee09dace5786ebfe46a54a6f2c0 Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期六, 20 十二月 2025 13:00:35 +0800
Subject: [PATCH] 优化了地块管理文字变成图标

---
 src/dikuai/Dikuaiguanli.java |  136 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 113 insertions(+), 23 deletions(-)

diff --git a/src/dikuai/Dikuaiguanli.java b/src/dikuai/Dikuaiguanli.java
index b70c499..009cc73 100644
--- a/src/dikuai/Dikuaiguanli.java
+++ b/src/dikuai/Dikuaiguanli.java
@@ -297,20 +297,17 @@
 
 		// 鍓茶崏瀹夊叏璺濈
 		String displaySafetyDistance = "鏈缃�";
-		Device device = Device.getActiveDevice();
-		if (device != null) {
-			String safetyDistanceValue = device.getMowingSafetyDistance();
-			if (safetyDistanceValue != null && !"-1".equals(safetyDistanceValue) && !safetyDistanceValue.trim().isEmpty()) {
-				try {
-					double distanceMeters = Double.parseDouble(safetyDistanceValue.trim());
-					// 濡傛灉鍊煎ぇ浜�100锛岃涓烘槸鍘樼背锛岄渶瑕佽浆鎹负绫�
-					if (distanceMeters > 100) {
-						distanceMeters = distanceMeters / 100.0;
-					}
-					displaySafetyDistance = String.format("%.2f绫�", distanceMeters);
-				} catch (NumberFormatException e) {
-					displaySafetyDistance = "鏈缃�";
+		String safetyDistanceValue = dikuai.getMowingSafetyDistance();
+		if (safetyDistanceValue != null && !"-1".equals(safetyDistanceValue) && !safetyDistanceValue.trim().isEmpty()) {
+			try {
+				double distanceMeters = Double.parseDouble(safetyDistanceValue.trim());
+				// 濡傛灉鍊煎ぇ浜�100锛岃涓烘槸鍘樼背锛岄渶瑕佽浆鎹负绫�
+				if (distanceMeters > 100) {
+					distanceMeters = distanceMeters / 100.0;
 				}
+				displaySafetyDistance = String.format("%.2f绫�", distanceMeters);
+			} catch (NumberFormatException e) {
+				displaySafetyDistance = "鏈缃�";
 			}
 		}
 		JPanel mowingSafetyDistancePanel = createCardInfoItem("鍓茶崏瀹夊叏璺濈:", displaySafetyDistance);
@@ -345,24 +342,24 @@
 	contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
 
 		// 璺緞鍧愭爣锛堝甫鏌ョ湅鎸夐挳锛�
-		JPanel pathPanel = createCardInfoItemWithButtonOnly("璺緞鍧愭爣:",
-			"鏌ョ湅", e -> editPlannedPath(dikuai));
+		JPanel pathPanel = createCardInfoItemWithIconButton("璺緞鍧愭爣:",
+			createViewButton(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));
+	JPanel baseStationPanel = createCardInfoItemWithIconButton("鍩虹珯鍧愭爣:",
+		createViewButton(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));
+	JPanel boundaryOriginalPanel = createCardInfoItemWithIconButton("杈圭晫鍘熷鍧愭爣:",
+		createViewButton(e -> editBoundaryOriginalCoordinates(dikuai)));
 	configureInteractiveLabel(getInfoItemTitleLabel(boundaryOriginalPanel),
 		() -> editBoundaryOriginalCoordinates(dikuai),
 		"鐐瑰嚮鏌ョ湅/缂栬緫杈圭晫鍘熷鍧愭爣");
@@ -371,7 +368,7 @@
 
 		JPanel completedTrackPanel = createCardInfoItemWithButton("宸插畬鎴愬壊鑽夎矾寰�:",
 			getTruncatedValue(dikuai.getMowingTrack(), 12, "鏈褰�"),
-			"鏌ョ湅", e -> showCompletedMowingTrackDialog(dikuai));
+			createViewButton(e -> showCompletedMowingTrackDialog(dikuai)));
 		setInfoItemTooltip(completedTrackPanel, dikuai.getMowingTrack());
 		configureInteractiveLabel(getInfoItemTitleLabel(completedTrackPanel),
 			() -> showCompletedMowingTrackDialog(dikuai),
@@ -456,6 +453,38 @@
 		return itemPanel;
 	}
 
+	private JPanel createCardInfoItemWithButton(String label, String value, JButton button) {
+		JPanel itemPanel = new JPanel(new BorderLayout());
+		itemPanel.setBackground(CARD_BACKGROUND);
+		// 澧炲姞楂樺害浠ョ‘淇濇寜閽畬鏁存樉绀猴紙鎸夐挳楂樺害绾�24-28鍍忕礌锛屽姞涓婁笂涓嬭竟璺濓級
+		itemPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, 35));
+		itemPanel.setPreferredSize(new Dimension(Integer.MAX_VALUE, 30));
+		itemPanel.setMinimumSize(new Dimension(0, 28));
+		
+		JLabel labelComp = new JLabel(label);
+		labelComp.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 14));
+		labelComp.setForeground(LIGHT_TEXT);
+		
+		JPanel rightPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0));
+		rightPanel.setBackground(CARD_BACKGROUND);
+		// 娣诲姞鍨傜洿鍐呰竟璺濅互纭繚鎸夐挳涓嶈瑁佸壀
+		rightPanel.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0));
+		
+		JLabel valueComp = new JLabel(value);
+		valueComp.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 14));
+		valueComp.setForeground(TEXT_COLOR);
+		
+		rightPanel.add(valueComp);
+		rightPanel.add(button);
+		
+		itemPanel.add(labelComp, BorderLayout.WEST);
+		itemPanel.add(rightPanel, BorderLayout.CENTER);
+		itemPanel.putClientProperty("valueLabel", valueComp);
+		itemPanel.putClientProperty("titleLabel", labelComp);
+		
+		return itemPanel;
+	}
+
 	private JPanel createCardInfoItemWithButtonOnly(String label, String buttonText, ActionListener listener) {
 		JPanel itemPanel = new JPanel(new BorderLayout());
 		itemPanel.setBackground(CARD_BACKGROUND);
@@ -484,6 +513,32 @@
 		return itemPanel;
 	}
 
+	private JPanel createCardInfoItemWithIconButton(String label, JButton button) {
+		JPanel itemPanel = new JPanel(new BorderLayout());
+		itemPanel.setBackground(CARD_BACKGROUND);
+		// 澧炲姞楂樺害浠ョ‘淇濇寜閽畬鏁存樉绀猴紙鎸夐挳楂樺害绾�24-28鍍忕礌锛屽姞涓婁笂涓嬭竟璺濓級
+		itemPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, 35));
+		itemPanel.setPreferredSize(new Dimension(Integer.MAX_VALUE, 30));
+		itemPanel.setMinimumSize(new Dimension(0, 28));
+		
+		JLabel labelComp = new JLabel(label);
+		labelComp.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 14));
+		labelComp.setForeground(LIGHT_TEXT);
+		
+		JPanel rightPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0));
+		rightPanel.setBackground(CARD_BACKGROUND);
+		// 娣诲姞鍨傜洿鍐呰竟璺濅互纭繚鎸夐挳涓嶈瑁佸壀
+		rightPanel.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0));
+		
+		rightPanel.add(button);
+		
+		itemPanel.add(labelComp, BorderLayout.WEST);
+		itemPanel.add(rightPanel, BorderLayout.CENTER);
+		itemPanel.putClientProperty("titleLabel", labelComp);
+		
+		return itemPanel;
+	}
+
 		private JPanel createBoundaryInfoItem(Dikuai dikuai) {
 			JPanel itemPanel = new JPanel(new BorderLayout());
 			itemPanel.setBackground(CARD_BACKGROUND);
@@ -1544,15 +1599,50 @@
 	}
 
 	private JButton createDeleteButton() {
-		JButton button = createStyledButton("鍒犻櫎", RED_COLOR, false); // 杞粨椋庢牸
-		ImageIcon deleteIcon = loadIcon("image/delete.png", 16, 16);
+		JButton button = new JButton();
+		ImageIcon deleteIcon = loadIcon("image/delete.png", 25, 25);
 		if (deleteIcon != null) {
 			button.setIcon(deleteIcon);
-			button.setIconTextGap(6);
+		} else {
+			button.setText("鍒犻櫎");
 		}
+		button.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 11));
+		button.setForeground(RED_COLOR);
+		button.setBorder(BorderFactory.createEmptyBorder());
+		button.setContentAreaFilled(false);
+		button.setFocusPainted(false);
+		button.setCursor(new Cursor(Cursor.HAND_CURSOR));
+		button.addMouseListener(new MouseAdapter() {
+			public void mouseEntered(MouseEvent e) { button.setOpaque(true); button.setBackground(new Color(255, 240, 240)); }
+			public void mouseExited(MouseEvent e) { button.setOpaque(false); }
+		});
 		return button;
 	}
 
+	private JButton createViewButton(ActionListener listener) {
+		JButton btn = new JButton();
+		ImageIcon lookIcon = loadIcon("image/look.png", 25, 25);
+		if (lookIcon != null) {
+			btn.setIcon(lookIcon);
+		} else {
+			btn.setText("鏌ョ湅");
+		}
+		btn.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 11));
+		btn.setForeground(PRIMARY_COLOR);
+		btn.setBorder(BorderFactory.createEmptyBorder());
+		btn.setContentAreaFilled(false);
+		btn.setFocusPainted(false);
+		btn.setCursor(new Cursor(Cursor.HAND_CURSOR));
+		btn.addMouseListener(new MouseAdapter() {
+			public void mouseEntered(MouseEvent e) { btn.setOpaque(true); btn.setBackground(new Color(230, 250, 240)); }
+			public void mouseExited(MouseEvent e) { btn.setOpaque(false); }
+		});
+		if (listener != null) {
+			btn.addActionListener(listener);
+		}
+		return btn;
+	}
+
 	private JButton createPrimaryFooterButton(String text) {
 		return createStyledButton(text, PRIMARY_COLOR, true); // 瀹炲績椋庢牸
 	}

--
Gitblit v1.10.0