From b518f895dec5264fd25e22a68300c40ceba6f43d Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期六, 20 十二月 2025 15:30:20 +0800
Subject: [PATCH] 新增了按钮功能

---
 src/zhuye/Lookbutton.java |  107 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 107 insertions(+), 0 deletions(-)

diff --git a/src/zhuye/Lookbutton.java b/src/zhuye/Lookbutton.java
new file mode 100644
index 0000000..aebfb9e
--- /dev/null
+++ b/src/zhuye/Lookbutton.java
@@ -0,0 +1,107 @@
+package zhuye;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+/**
+ * 鏌ョ湅鎸夐挳宸ュ叿绫�
+ * 鎻愪緵缁熶竴鐨勬煡鐪嬫寜閽垱寤烘柟娉曪紝榛樿鏄剧ず鏌ョ湅鍥炬爣锛岀偣鍑绘寜閽墽琛屽搴旂殑鎿嶄綔
+ */
+public final class Lookbutton {
+    
+    // 榛樿鍥炬爣澶у皬
+    private static final int DEFAULT_ICON_SIZE =25;
+    
+    private Lookbutton() {
+        // 宸ュ叿绫讳笉闇�瑕佸疄渚嬪寲
+    }
+    
+    /**
+     * 鍒涘缓鏌ョ湅鎸夐挳
+     * 榛樿鏄剧ず image/look.png 鍥炬爣锛岀偣鍑绘寜閽墽琛屼紶鍏ョ殑鎿嶄綔
+     * 
+     * @param listener 鎸夐挳鐐瑰嚮浜嬩欢鐩戝惉鍣紝褰撴寜閽鐐瑰嚮鏃舵墽琛�
+     * @param hoverColor 榧犳爣鎮仠鏃剁殑鑳屾櫙棰滆壊锛堝鏋滀负null锛屼娇鐢ㄩ粯璁ら鑹诧級
+     * @return 閰嶇疆濂界殑鏌ョ湅鎸夐挳
+     */
+    public static JButton createViewButton(ActionListener listener, Color hoverColor) {
+        JButton viewButton = new JButton();
+        
+        // 鍔犺浇鍥炬爣
+        ImageIcon lookIcon = loadIcon("image/look.png", DEFAULT_ICON_SIZE, DEFAULT_ICON_SIZE);
+        
+        // 璁剧疆鎸夐挳鍥炬爣
+        if (lookIcon != null) {
+            viewButton.setIcon(lookIcon);
+        } else {
+            viewButton.setText("鏌ョ湅");
+        }
+        
+        // 璁剧疆鎸夐挳鏍峰紡
+        viewButton.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 11));
+        viewButton.setForeground(new Color(46, 139, 87)); // PRIMARY_COLOR
+        viewButton.setBorder(BorderFactory.createEmptyBorder());
+        viewButton.setContentAreaFilled(false);
+        viewButton.setFocusPainted(false);
+        viewButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
+        
+        // 璁剧疆鎻愮ず鏂囨湰涓�"鐐瑰嚮鏌ョ湅"
+        viewButton.setToolTipText("鐐瑰嚮鏌ョ湅");
+        
+        // 璁剧疆鎮仠鏁堟灉
+        final Color finalHoverColor = hoverColor != null ? hoverColor : new Color(230, 250, 240);
+        viewButton.addMouseListener(new MouseAdapter() {
+            public void mouseEntered(MouseEvent e) {
+                viewButton.setOpaque(true);
+                viewButton.setBackground(finalHoverColor);
+            }
+            
+            public void mouseExited(MouseEvent e) {
+                viewButton.setOpaque(false);
+            }
+        });
+        
+        // 娣诲姞鐐瑰嚮浜嬩欢
+        if (listener != null) {
+            viewButton.addActionListener(listener);
+        }
+        
+        return viewButton;
+    }
+    
+    /**
+     * 鍒涘缓鏌ョ湅鎸夐挳锛堜娇鐢ㄩ粯璁ゆ偓鍋滈鑹诧級
+     * 
+     * @param listener 鎸夐挳鐐瑰嚮浜嬩欢鐩戝惉鍣紝褰撴寜閽鐐瑰嚮鏃舵墽琛�
+     * @return 閰嶇疆濂界殑鏌ョ湅鎸夐挳
+     */
+    public static JButton createViewButton(ActionListener listener) {
+        return createViewButton(listener, null);
+    }
+    
+    /**
+     * 鍔犺浇鍥炬爣骞惰皟鏁村ぇ灏�
+     * 
+     * @param path 鍥炬爣璺緞
+     * @param width 鐩爣瀹藉害
+     * @param height 鐩爣楂樺害
+     * @return 璋冩暣澶у皬鍚庣殑鍥炬爣锛屽鏋滃姞杞藉け璐ヨ繑鍥瀗ull
+     */
+    private static ImageIcon loadIcon(String path, int width, int height) {
+        try {
+            ImageIcon rawIcon = new ImageIcon(path);
+            if (rawIcon.getIconWidth() <= 0 || rawIcon.getIconHeight() <= 0) {
+                return null;
+            }
+            Image scaled = rawIcon.getImage().getScaledInstance(width, height, Image.SCALE_SMOOTH);
+            return new ImageIcon(scaled);
+        } catch (Exception ex) {
+            System.err.println("鏃犳硶鍔犺浇鍥炬爣: " + path + " - " + ex.getMessage());
+            return null;
+        }
+    }
+}
+

--
Gitblit v1.10.0