826220679@qq.com
18 小时以前 1bda9524add969e315d870f284046ecf1097f956
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package publicsWay;
 
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) {
        // Create table model
        DefaultTableModel model = new DefaultTableModel(columnNames, 0) {
            @Override
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        
        // Create table instance
        JTable table = new JTable(model);
        table.setAutoCreateRowSorter(true);
        table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        
        // Apply table styling
        setupTableStyle(table);
        
        // Apply header styling
        setupTableHeaderStyle(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.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);
    }
}