Я сделал этот класс CustomCellRenderer
, предназначенный для использования в JXTreeTable
и JXTable
объектах, так как у меня их много в моем проекте. Так что этот класс реализует TreeCellRenderer
и TableCellRenderer
интерфейсов:Пользовательский TableCellRenderer/TreeTableCellRenderer не отображает ячейки таблицы
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());
Я ожидаю, что фон и передний план стали синими и белыми, соответственно, когда строка выбран. Однако это происходит только на дереве ячейки таблицы (первый столбец), а только на переднем плане изменения и фона кадры из белого в других клетках в той же самой выбранной строке:
Может кто-нибудь пожалуйста, скажите мне, почему клетки (то есть а не древовидные клетки) не меняют цвет фона?
нет entendi ла Pregunta – nachokk
Я надеваю Не поймите; почему «Object.class»? _what_ не меняется на синий? Пожалуйста, отредактируйте свой вопрос, чтобы включить [sscce] (http://sscce.org/), который показывает проблему, которую вы описываете. – trashgod