Пользовательский 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() : "");
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() : "");
return this;
}
}
И вот код, где я установил рендерер:
jXTreeTableConsumos.setDefaultRenderer(Object.class, new CustomCellRenderer());
jXTreeTableConsumos.setTreeCellRenderer(new CustomCellRenderer());
m ожидая, что фон и передний план станут синими и белыми соответственно, когда выбрана строка. Однако это происходит только в ячейке таблицы дерева (первый столбец), когда изменяется только передний план, а фон остается белым в других ячейках в той же выбранной строке:
Кто-нибудь может сказать мне, почему клетки (которые не являются клетками дерева) неизменить цвет фона?