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/publicsWay/TableUtils.java | 123 +++++++++++++++++++++++++++++++---------- 1 files changed, 93 insertions(+), 30 deletions(-) diff --git a/src/publicsWay/TableUtils.java b/src/publicsWay/TableUtils.java index 248c617..6545e35 100644 --- a/src/publicsWay/TableUtils.java +++ b/src/publicsWay/TableUtils.java @@ -1,47 +1,110 @@ -package publicsWay; // 包声明 -import javax.swing.*; // 导入Swing组件 -import javax.swing.table.DefaultTableCellRenderer; // 导入表格单元格渲染器 -import javax.swing.table.DefaultTableModel; // 导入默认表格模型 -import java.awt.*; // 导入AWT图形组件 +package publicsWay; -public class TableUtils { // 表格工具类 +import javax.swing.*; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.JTableHeader; +import java.awt.*; + +public class TableUtils { - // 创建通用表格的方法 + // Create a styled table with specified column names @SuppressWarnings("serial") - public static JTable createCommonTable(String[] columnNames) { // 静态方法可直接调用 - // 创建表格模型 - 匿名内部类扩展DefaultTableModel - DefaultTableModel model = new DefaultTableModel(columnNames, 0) { // 初始化表格模型 + public static JTable createCommonTable(String[] columnNames) { + // Create table model + DefaultTableModel model = new DefaultTableModel(columnNames, 0) { @Override - public boolean isCellEditable(int row, int column) { // 重写单元格可编辑性 - return false; // 所有单元格不可编辑 + public boolean isCellEditable(int row, int column) { + return false; } }; - // 创建表格实例 - JTable table = new JTable(model); // 使用自定义模型创建表格 - table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 设置单选模式 + // Create table instance + JTable table = new JTable(model); + table.setAutoCreateRowSorter(true); + table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - // 创建表头渲染器 - DefaultTableCellRenderer headerRenderer = createHeaderRenderer(); // 调用渲染器创建方法 + // Apply table styling + setupTableStyle(table); - // 应用表头渲染器到所有列 - for (int i = 0; i < table.getColumnCount(); i++) { // 遍历所有列 - table.getColumnModel().getColumn(i).setHeaderRenderer(headerRenderer); // 设置列头渲染器 - } + // Apply header styling + setupTableHeaderStyle(table); - return table; // 返回配置好的表格实例 + return table; } - // 创建表头渲染器 + // Setup basic table styling + public static void setupTableStyle(JTable table) { + table.setShowVerticalLines(false); + table.setShowHorizontalLines(true); + table.setGridColor(new Color(220, 220, 220)); + table.setIntercellSpacing(new Dimension(0, 1)); + table.setRowHeight(25); + } + + // Setup table header styling + public static void setupTableHeaderStyle(JTable table) { + JTableHeader header = table.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)); + + // Create and apply header renderer + DefaultTableCellRenderer headerRenderer = createHeaderRenderer(); + for (int i = 0; i < table.getColumnCount(); i++) { + table.getColumnModel().getColumn(i).setHeaderRenderer(headerRenderer); + } + } + + // Create header renderer @SuppressWarnings("serial") - private static DefaultTableCellRenderer createHeaderRenderer() { // 私有工具方法 - return new DefaultTableCellRenderer() { // 返回匿名内部类实例 - { // 实例初始化块 - setHorizontalAlignment(SwingConstants.LEFT); // 设置表头文本左对齐 - setBackground(Color.GRAY); // 设置表头背景为灰色 - setForeground(Color.WHITE); // 设置表头文字为白色 - setFont(getFont().deriveFont(Font.BOLD)); // 设置表头字体加粗 + private static DefaultTableCellRenderer createHeaderRenderer() { + return new DefaultTableCellRenderer() { + { + setHorizontalAlignment(SwingConstants.CENTER); + setBackground(new Color(70, 130, 180)); + setForeground(Color.WHITE); + setFont(getFont().deriveFont(Font.BOLD)); + setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); } }; } + + // Create cell renderer with zebra striping + @SuppressWarnings("serial") + public static DefaultTableCellRenderer createCellRenderer(int alignment) { + return new DefaultTableCellRenderer() { + @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); + + // Set alternating row colors + 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)); + } + + // Set cell alignment + setHorizontalAlignment(alignment); + + // Set cell padding + setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); + + return c; + } + }; + } + + // Create centered cell renderer with zebra striping (most common case) + public static DefaultTableCellRenderer createCenteredCellRenderer() { + return createCellRenderer(SwingConstants.CENTER); + } } \ No newline at end of file -- Gitblit v1.9.3