Swing Table上的常用技巧

1、自定义列宽

TableColumnModel colModel = table.getColumnModel();
colModel.getColumn(0).setPreferredWidth(70);
colModel.getColumn(1).setPreferredWidth(55);
colModel.getColumn(2).setPreferredWidth(120);


2、自定义表头排序
TableRowSorter rs = (TableRowSorter) table.getRowSorter();
Comparator<Integer> intComparator = new Comparator<Integer>() {

            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
        };
rs.setComparator(3, intComparator);


3、自定义table Renderer
public class CommonTableCellRenderer extends DefaultTableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean cellHasFocus, int row, int column) {
        JComponent comp = (JComponent) super.getTableCellRendererComponent(table, value, isSelected,
                cellHasFocus, row, column);
//表格的奇数偶数行交叉颜色显示
        if (!isSelected) {
            if (row % 2 == 0) {
                comp.setBackground(UIConsts.HIGHLIGHTER_COLOR);
            } else {
                comp.setBackground(Color.white);
            }
        }

//table column里面显示图标和对齐方式
switch (column) {
            case PaperTableModel.STATUS_COLUMN:
                switch ((EntityStatus) value) {
                    case VALID:
                        comp.setIcon(ENABLED_ICON);
                        setHorizontalAlignment(JLabel.LEADING);
                        break;
                    case DISABLED:
                        comp.setIcon(DISABLED_ICON);
                        setHorizontalAlignment(JLabel.CENTER);
                        break;
                }
                break;
            default:
                comp.setIcon(null);
                break;
        }

        return comp;
    }
}


4.禁止Table列拖动
table.getTableHeader().setReorderingAllowed(false);

你可能感兴趣的:(java,swing)