Пользовательский TableCellRenderer / TreeTableCellRenderer не отображает ячейки таблицы
я это сделалCustomCellRenderer
класс предназначен для использования вJXTreeTable
а такжеJXTable
объекты, так как у меня их много в моем проекте. Так что этот класс реализуетTreeCellRenderer
а такжеTableCellRenderer
интерфейсы:
public class CustomCellRenderer extends JLabel
implements TreeCellRenderer, TableCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
setBackground(selected ? new Color(83,142,213) : Color.white);
setForeground(selected ? Color.white : Color.black);
//here is the icon setting code but it's irrelevant to my problem
setText(value != null ? value.toString() : "<null>");
return this;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setBackground(isSelected ? new Color(83,142,213) : Color.white);
setForeground(isSelected ? Color.white : Color.black);
setText(value != null ? value.toString() : "<null>");
return this;
}
}
И вот код, где я установил рендерер:
jXTreeTableConsumos.setDefaultRenderer(Object.class, new CustomCellRenderer());
jXTreeTableConsumos.setTreeCellRenderer(new CustomCellRenderer());
Я ожидаю, что фон и передний план станут синими и белыми соответственно, когда выбрана строка. Однако это происходит только в ячейке таблицы дерева (первый столбец), когда изменяется только передний план, а фон остается белым в других ячейках в той же выбранной строке:
Может ли кто-нибудь сказать мне, почему клетки (которые не являются клетками дерева) не меняют свой цвет фона?