我有一个显示 jTree 的应用程序。树中的每个节点都有一个名为的布尔字段flagged
,指示它是否需要用户注意。
如果该字段是true
,那么我希望它以红色突出显示,否则不突出显示。
有什么好方法可以做到这一点?我应该延长DefaultTreeCellRenderer
吗?实现我自己的自定义TreeCellRenderer
?还有什么方法?
我有一个显示 jTree 的应用程序。树中的每个节点都有一个名为的布尔字段flagged
,指示它是否需要用户注意。
如果该字段是true
,那么我希望它以红色突出显示,否则不突出显示。
有什么好方法可以做到这一点?我应该延长DefaultTreeCellRenderer
吗?实现我自己的自定义TreeCellRenderer
?还有什么方法?
由于您想要做的自定义渲染非常基本,我将扩展DefaultTreeCellRenderer
并覆盖它的getTreeCellRendererComponent
方法。JLabel
您可以简单地调整使用的前景色DefaultTreeCellRenderer
。这是一个简单的例子:
tree.setCellRenderer(new DefaultTreeCellRenderer() {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded,
boolean leaf, int row, boolean hasFocus) {
JLabel label = (JLabel)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
YourNode node = (YourNode)value;
if (node.isFlagged())
label.setForeground(Color.RED);
return label;
}
});
结果: