这个有色的JTree有什么问题? (自定义渲染器问题)

时间:2009-11-17 19:02:46

标签: java swing jtree

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

这是我的代码:

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寻求帮助。

//更新: 我将我的代码关联起来,但没有帮助。

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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