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