【问题标题】: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;
      }
    });
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 2021-08-24
      • 2013-02-11
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多