使用表格单元格标题颜色自定义jtable单元格渲染器

时间:2011-07-11 00:45:54

标签: swing colors header jtable look-and-feel

这个问题与我的previous post非常相似。 我需要自定义一个JTable的单元格,它们看起来像一个表格标题单元格。 我正在使用Nimbus的外观和感觉,我正在尝试检索JTable编辑器的颜色:

public class HeaderCellRenderer extends JLabel implements TableCellRenderer{


    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {

        System.out.println("OK");
        this.setOpaque(true);
        setBackground(UIManager.getColor("TableHeader.background"));
        return this;
    }

}

我按照post来获取要提供给getColor方法的名称(“TableHeader.background”)。 尽管我从现在开始做了什么,但返回的颜色与我桌子的标题单元格不同。

你有什么想法吗?

编辑:

我注意到它应该是渐变而不是颜色,但我找不到正确的键。我看了this list

1 个答案:

答案 0 :(得分:3)

典型外观和外观的默认表格标题的外观感觉由sun.swing.table.DefaultTableCellHeaderRenderer的实例提供。您可以按如下方式获取副本:

class HeaderRenderer implements TableCellRenderer {

    TableCellRenderer renderer;

    public HeaderRenderer(JTable table) {
        renderer = table.getTableHeader().getDefaultRenderer();
    }

    @Override
    public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected,
        boolean hasFocus, int row, int col) {
        return renderer.getTableCellRendererComponent(
            table, value, isSelected, hasFocus, row, col);
    }
}

您可以按照通常的方式为给定列的type token安装它:

table.setDefaultRenderer(SomeObject.class, new HeaderRenderer(table));