Java 什么';这棵彩色的树怎么了?(自定义渲染器问题)

Java 什么';这棵彩色的树怎么了?(自定义渲染器问题),java,swing,jtree,Java,Swing,Jtree,我希望编写自定义TreeCellRenderer,使其具有不同颜色的根、节点和叶 这是我的代码: tree.setCellRenderer(new DefaultTreeCellRenderer() { @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boo

我希望编写自定义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);

        }

    }
});
不幸的是,只有选定的节点会更改颜色

我做错了什么?我需要帮助

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

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


你对
super
的使用是super流畅的[这句妙语值得称赞]。

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


您对
super
的使用是super流畅的[这句俏皮话的功劳归于]。

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

为什么在设置颜色(并最终返回此内容)之前调用super.gettreecellrendercomponent?尝试先设置颜色,然后返回super.gettreeCellrenderComponent返回的内容

Oops。。。我必须多喝点咖啡,用记事本代替上网本。谢谢。好的,是挫折背景NonSelectionColor()。哎呀。。。我必须多喝点咖啡,用记事本代替上网本。谢谢。好的,这是setBackgroundNonSelectionColor()。