【发布时间】:2025-12-22 03:20:13
【问题描述】:
我制作了这个 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());
我期待背景和前景分别在选择行时变为蓝色和白色。然而,它只发生在树表单元格(第一列),而在同一选定行的其他单元格中,只有前景发生变化,背景仍然是白色:
谁能告诉我为什么细胞(不是树细胞)不改变它们的背景颜色?
【问题讨论】:
-
禁止怀孕
-
我也不明白;为什么
Object.class? 什么不会变成蓝色?请编辑您的问题,在sscce 中包含您描述的问题。
标签: java swing renderer swingx jxtreetable