настройка jtable cellrenderer с цветом заголовка ячейки таблицы - PullRequest
3 голосов
/ 11 июля 2011

Этот вопрос действительно похож на этот мой предыдущий пост .Мне нужно настроить некоторую ячейку 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").Несмотря на то, что я сделал с тех пор, возвращенный цвет не совпадает с ячейками заголовка моей таблицы.

У вас есть идеи?

РЕДАКТИРОВАТЬ:

Iзаметил, что вместо цвета должен быть градиент, но я не могу найти правильный ключ для использования.Я посмотрел этот список .

1 Ответ

3 голосов
/ 11 июля 2011

Внешний вид заголовка таблицы по умолчанию для типичного внешнего вида обеспечивается экземпляром 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);
    }
}

и установить ее обычным способом для токена типа данного столбца :

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