【问题标题】:Highlighting specific nodes in a jtree depending on data stored in the node根据存储在节点中的数据突出显示 jtree 中的特定节点
【发布时间】:2013-06-11 06:42:51
【问题描述】:
我有一个显示 jTree 的应用程序。树中的每个节点都有一个名为 flagged 的布尔字段,指示它是否需要用户注意。
如果字段是true,那么我希望它以红色突出显示,否则不突出显示。
有什么好的方法可以做到这一点?我应该扩展DefaultTreeCellRenderer 吗?实现我自己的自定义TreeCellRenderer?其他方法?
【问题讨论】:
标签:
java
swing
jtree
treecellrenderer
【解决方案1】:
由于您要进行的自定义渲染非常基本,我将扩展 DefaultTreeCellRenderer 并覆盖其 getTreeCellRendererComponent 方法。您可以简单地调整DefaultTreeCellRenderer 使用的JLabel 的前景色。这是一个简单的例子:
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;
}
});
结果: