1
zhanghua
2024-09-26 c775c6953d9759e70f08acbfa8f6d7490aaae3d1
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
package com.netsdk.demo.customize.surfaceEventDemo.frame.basic;
 
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
 
/**
 * @author 47040
 * @since Created in 2021/5/11 11:25
 */
public class GroupListPanel extends JPanel {
 
    private DefaultTableModel groupInfoModel;
    private final JTable groupInfoTable;
 
    private final int MaxLine = 50;
    private final String[] groupLabel;
 
    /**
     * @param titles    表头名称列表
     * @param minWidths 表头字段长度
     */
    public GroupListPanel(String[] titles, int[] minWidths) {
        if (titles == null || minWidths.length != titles.length)
            throw new RuntimeException("Group list panel with no titles.");
        groupLabel = titles;
        SwingUtil.setBorderEx(this, "事件信息", 2);
        setLayout(new BorderLayout());
        Dimension dim = getPreferredSize();
        dim.width = 480;
        dim.height = 310;
        setPreferredSize(dim);
 
        Object[][] groupData = new Object[MaxLine][groupLabel.length];
        groupInfoModel = new DefaultTableModel(groupData, titles);
        groupInfoTable = new JTable(groupInfoModel) {
            @Override // 不可编辑
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
 
        groupInfoModel = (DefaultTableModel) groupInfoTable.getModel();
        for (int i = 0; i < groupLabel.length; i++) {
            if (i == 0) groupInfoTable.getColumnModel().getColumn(i).setMaxWidth(80);
            else if (i == 1) groupInfoTable.getColumnModel().getColumn(i).setMaxWidth(40);
            else groupInfoTable.getColumnModel().getColumn(i).setPreferredWidth(minWidths[i]);
        }
 
        groupInfoTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行
 
        // 列表显示居中
        DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
        dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
        groupInfoTable.setDefaultRenderer(Object.class, dCellRenderer);
 
        JScrollPane scrollPane = new JScrollPane(groupInfoTable);
        add(scrollPane, BorderLayout.CENTER);
    }
 
    public JTable getGroupInfoTable() {
        return groupInfoTable;
    }
 
    public DefaultTableModel getGroupInfoModel() {
        return groupInfoModel;
    }
 
    public void clearTableContent() {
        int rowCount = groupInfoModel.getRowCount();
        int columnCount = groupInfoModel.getColumnCount();
        //清空DefaultTableModel中的内容
        for (int i = 0; i < rowCount; i++)//表格中的行数
        {
            for (int j = 0; j < columnCount; j++) {//表格中的列数
                groupInfoModel.setValueAt(" ", i, j); //逐个清空
            }
        }
    }
 
    public void updateTableContent(String[][] data) {
        clearTableContent();
        for (int i = 0; i < Math.min(data.length, MaxLine); i++) {
            for (int j = 0; j < Math.min(data[0].length, groupLabel.length); j++) {
                groupInfoModel.setValueAt(data[i][j], i, j);
            }
        }
    }
}