根据存储在节点中的数据突出显示jtree中的特定节点

时间:2013-06-14 15:01:18

标签: java swing jtree treecellrenderer

我有一个显示jTree的应用程序。树中的每个节点都有一个名为flagged的布尔字段,表示是否需要用户注意。

如果该字段为true,那么我希望它以红色突出显示,否则不会突出显示。

实现这一目标的好方法是什么?我应该延长DefaultTreeCellRenderer吗?实现我自己的自定义TreeCellRenderer?其他一些方法?

1 个答案:

答案 0 :(得分:4)

由于您要做的自定义渲染非常基本,我只需要扩展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;
  }
});

结果: enter image description here