在运行时更改 header 的颜色

Change color of header at runtime

我正在使用下面的代码更改 table 的颜色,它适用于行,但不适用于列。

DefaultTableCellRenderer defaultTableCellRenderer = new DefaultTableCellRenderer() {

        private static final long serialVersionUID = 1567316215541963628L;

        @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);
            c.setBackground(row % 2 == 0 ? Color.white : new Color(0xE8E8E8));
            c.setForeground(Color.black);

            // c.setForeground(Color.black);
            c.setFont(getFont().deriveFont(14.0f));

            if (row == table.getRowCount() - 1) {
                c.setForeground(Color.white);
                c.setBackground(Color.gray);
            }

            if (nameRownumber.contains(row)) {
                c.setBackground(Color.yellow);

            }
            if (nameColumnNumber.contains(column)) {
                c.setBackground(Color.yellow);
            }


            return c;
        };

    };

这里nameRownumbernameColumnNumber的类型是ArrayList<Integer>,我在运行时为它们赋值,其中行和列需要突出显示。

table header 使用不同的渲染器。

您可以使用以下方式设置渲染器:

table.getTableHeader().setDefaultRenderer( ... );