From 1bda9524add969e315d870f284046ecf1097f956 Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期日, 24 八月 2025 18:01:25 +0800
Subject: [PATCH] 修改

---
 src/dell_targets/TagManagementPanel.java |  142 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 121 insertions(+), 21 deletions(-)

diff --git a/src/dell_targets/TagManagementPanel.java b/src/dell_targets/TagManagementPanel.java
index 06daa66..35b29d5 100644
--- a/src/dell_targets/TagManagementPanel.java
+++ b/src/dell_targets/TagManagementPanel.java
@@ -2,13 +2,16 @@
 
 import targets.LocationTag;
 import javax.swing.*;
+import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.sql.SQLException;
 import java.util.List;
 import java.util.ResourceBundle;
+import publicsWay.ButtonUtils;  // Added import
 
 public class TagManagementPanel extends JPanel {
     private static final long serialVersionUID = 1L;
@@ -21,31 +24,39 @@
     public TagManagementPanel(ResourceBundle messages) {
         this.messages = messages;
         setLayout(new BorderLayout());
-        setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
+        setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
         
-        // 创建搜索面板
-        JPanel searchPanel = new JPanel(new BorderLayout(5, 5));
-        searchPanel.setBorder(BorderFactory.createTitledBorder(messages.getString("SEARCH")));
+        // 创建顶部面板
+        JPanel topPanel = new JPanel(new BorderLayout(5, 5));
+        topPanel.setBorder(BorderFactory.createTitledBorder(messages.getString("SEARCH")));
         
-        // 创建搜索文本框和按钮
-        searchField = new JTextField(10); // 缩短搜索文本框长度
-        JButton searchButton = new JButton(messages.getString("SEARCH"));
-        JButton refreshButton = new JButton(messages.getString("REFRESH")); // 添加刷新按钮
-        refreshButton.addActionListener(e -> loadTagData()); // 绑定刷新动作
+        // 左侧搜索组件面板
+        JPanel searchInputPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0));
+        JLabel searchLabel = new JLabel(messages.getString("DEVICE_NUMBER") + ":");
+        searchField = new JTextField(20);
+        
+        // 使用ButtonUtils创建按钮
+        JButton searchButton = ButtonUtils.createBlueButton(messages.getString("SEARCH"));
+        JButton resetButton = ButtonUtils.createBlueButton(messages.getString("RESET"));
 
-        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 5));
-        buttonPanel.add(searchButton);
-        buttonPanel.add(refreshButton);
+        searchInputPanel.add(searchLabel);
+        searchInputPanel.add(searchField);
+        searchInputPanel.add(searchButton);
+        searchInputPanel.add(resetButton);
 
-        searchPanel.add(searchField, BorderLayout.CENTER);
-        searchPanel.add(buttonPanel, BorderLayout.EAST);
-        
-        // 创建操作按钮面板
-        JPanel actionPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 5));
-        JButton addButton = new JButton(messages.getString("ADD"));
-        JButton deleteButton = new JButton(messages.getString("DELETE"));
+        // 右侧操作按钮面板
+        JPanel actionPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0));
+        JButton addButton = ButtonUtils.createBlueButton(messages.getString("ADD"));
+        JButton deleteButton = ButtonUtils.createBlueButton(messages.getString("DELETE"));
+        JButton refreshButton = ButtonUtils.createBlueButton(messages.getString("REFRESH"));
+
         actionPanel.add(addButton);
         actionPanel.add(deleteButton);
+        actionPanel.add(refreshButton);
+
+        // 将左侧搜索和右侧操作添加到顶部面板
+        topPanel.add(searchInputPanel, BorderLayout.CENTER);
+        topPanel.add(actionPanel, BorderLayout.EAST);
         
         // 创建表格 - 按照表5要求修改列名
         String[] columnNames = {
@@ -75,6 +86,13 @@
         tagTable.setAutoCreateRowSorter(true);
         tagTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         
+        // 设置表格样式 - 去掉竖线,只显示横线,栅栏效果
+        tagTable.setShowVerticalLines(false); // 不显示竖线
+        tagTable.setShowHorizontalLines(true); // 显示横线
+        tagTable.setGridColor(new Color(220, 220, 220)); // 设置网格线颜色为浅灰色
+        tagTable.setIntercellSpacing(new Dimension(0, 1)); // 设置单元格间距,增加行间距
+        tagTable.setRowHeight(25); // 设置行高
+        
         // 设置列宽
         tagTable.getColumnModel().getColumn(0).setPreferredWidth(30);
         tagTable.getColumnModel().getColumn(1).setPreferredWidth(100);
@@ -88,19 +106,95 @@
         tagTable.getColumnModel().getColumn(9).setPreferredWidth(120); // 上线时间
         tagTable.getColumnModel().getColumn(10).setPreferredWidth(100);
         
+        // 设置表头样式
+        JTableHeader header = tagTable.getTableHeader();
+        header.setBackground(new Color(70, 130, 180)); // 钢蓝色表头
+        header.setForeground(Color.WHITE);
+        header.setFont(header.getFont().deriveFont(Font.BOLD));
+        header.setPreferredSize(new Dimension(header.getWidth(), 30)); // 增加表头高度
+        
+        // 创建表头渲染器
+        DefaultTableCellRenderer headerRenderer = new DefaultTableCellRenderer() {
+            /**
+			 * 
+			 */
+			private static final long serialVersionUID = 1L;
+
+			{
+                setHorizontalAlignment(SwingConstants.CENTER);
+                setBackground(new Color(70, 130, 180)); // 钢蓝色表头
+                setForeground(Color.WHITE);
+                setFont(getFont().deriveFont(Font.BOLD));
+                setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); // 增加表头内边距
+            }
+        };
+        
+        // 应用表头渲染器
+        for (int i = 0; i < tagTable.getColumnCount(); i++) {
+            tagTable.getColumnModel().getColumn(i).setHeaderRenderer(headerRenderer);
+        }
+        
+        // 创建单元格渲染器,实现栅栏效果
+        DefaultTableCellRenderer cellRenderer = new DefaultTableCellRenderer() {
+            /**
+			 * 
+			 */
+			private static final long serialVersionUID = 1L;
+
+			@Override
+            public Component getTableCellRendererComponent(JTable table, Object value,
+                                                         boolean isSelected, boolean hasFocus,
+                                                         int row, int column) {
+                Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+                
+                // 设置交替行颜色
+                if (!isSelected) {
+                    if (row % 2 == 0) {
+                        c.setBackground(new Color(240, 240, 200)); // 浅灰色
+                    } else {
+                        c.setBackground(Color.WHITE); // 白色
+                    }
+                } else {
+                    c.setBackground(new Color(200, 220, 240)); // 选中行的蓝色
+                }
+                
+                // 设置单元格对齐方式
+                if (column == 0) { // 索引列居中
+                    setHorizontalAlignment(SwingConstants.CENTER);
+                } else if (column == 5) { // 电池电量列居中
+                    setHorizontalAlignment(SwingConstants.CENTER);
+                } else {
+                    setHorizontalAlignment(SwingConstants.CENTER);
+                }
+                
+                // 设置单元格边框
+                setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); // 左右内边距
+                
+                return c;
+            }
+        };
+        
+        // 应用单元格渲染器到所有列
+        for (int i = 0; i < tagTable.getColumnCount(); i++) {
+            tagTable.getColumnModel().getColumn(i).setCellRenderer(cellRenderer);
+        }
+        
         JScrollPane scrollPane = new JScrollPane(tagTable);
         scrollPane.setPreferredSize(new Dimension(1200, 400));
+        scrollPane.setBorder(BorderFactory.createEmptyBorder()); // 移除滚动面板边框
         
         // 添加组件
-        add(searchPanel, BorderLayout.NORTH);
+        add(topPanel, BorderLayout.NORTH);
         add(scrollPane, BorderLayout.CENTER);
-        add(actionPanel, BorderLayout.SOUTH);
         
         // 加载数据
         loadTagData();
         
         // 添加事件监听器
         searchButton.addActionListener(new SearchAction());
+        resetButton.addActionListener(e -> resetSearch());
+        refreshButton.addActionListener(e -> loadTagData());
+        
         addButton.addActionListener(e -> {
             AddTagDialog dialog = new AddTagDialog((Frame) SwingUtilities.getWindowAncestor(TagManagementPanel.this), messages);
             dialog.setVisible(true);
@@ -194,6 +288,12 @@
         }
     }
     
+    // 重置搜索
+    private void resetSearch() {
+        searchField.setText("");
+        updateTable(allTags);
+    }
+    
     private class SearchAction implements ActionListener {
         @Override
         public void actionPerformed(ActionEvent e) {

--
Gitblit v1.9.3