【问题标题】:What's wrong with this colored JTree? (custom renderer problem)这个彩色的 JTree 有什么问题? (自定义渲染器问题)
【发布时间】:2009-11-17 19:02:46
【问题描述】:

我想编写自定义 TreeCellRenderer 以具有不同颜色的根、节点和叶子。

这是我的代码:

tree.setCellRenderer(new DefaultTreeCellRenderer() {

    @Override
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
        {

            DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;

            if (node.isRoot()) {
                super.setBackground(Color.red);
            } else if (node.getChildCount() > 0) {
                super.setBackground(Color.yellow);
            } else if (leaf) {
                super.setBackground(Color.green);
            }
            return super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);

        }

    }
});

不幸的是,只有选定的节点会改变颜色。

我做错了什么? TIA 寻求帮助。

//更新: 我关联了我的代码,但它没有帮助。

【问题讨论】:

    标签: java swing jtree


    【解决方案1】:

    也许您的意思是setBackgroundColor() 而不是setBackgroundSelectionColor(),顾名思义,它只设置选定状态的颜色。

    您对super 的使用超级流利[此诙谐言论归功于Carl Smotricz]。

    【讨论】:

    • 糟糕...我必须多喝点咖啡,用记事本代替 NetBeans。谢谢。
    • 好的,它是 setBackgroundNonSelectionColor()。
    【解决方案2】:

    为什么在设置颜色之前调用 super.getTreeCellRendererComponent (并最终返回这个)?尝试先设置颜色并返回 super.getTreeCellRendererComponent 返回的内容

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 1970-01-01
      • 2010-10-21
      • 2021-04-04
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      相关资源
      最近更新 更多