首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java swing -为我的JTree节点添加颜色

java swing -为我的JTree节点添加颜色
EN

Stack Overflow用户
提问于 2010-02-23 16:27:49
回答 2查看 3.4K关注 0票数 1

我已经创建了一个下面的渲染器,它渲染带有复选框的JTree,我想要添加不同的颜色和图标到不同的节点。我该怎么做呢?请帮帮我。提前谢谢你。

代码语言:javascript
复制
class CheckTreeCellRenderer extends JPanel implements TreeCellRenderer {
private CheckTreeSelectionModel selectionModel;
private TreeCellRenderer delegate;
private TristateCheckBox checkBox = new TristateCheckBox("",null,true);
public static final State NOT_SELECTED = new State();
public static final State SELECTED = new State();
public static final State DONT_CARE = new State();

public CheckTreeCellRenderer(TreeCellRenderer delegate, CheckTreeSelectionModel selectionModel) {
    this.delegate =  delegate;
    this.selectionModel = selectionModel;
    setLayout(new BorderLayout());
    setOpaque(false);
    checkBox.setState(Boolean.TRUE);
    revalidate();
    checkBox.setOpaque(false);
}

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

    Component renderer = delegate.getTreeCellRendererComponent
            (tree, value, selected, expanded, leaf, row, hasFocus);

    TreePath path = tree.getPathForRow(row);

    if(path!=null){
        if(selectionModel.isPathSelected(path, true)) {
            checkBox.setState(Boolean.TRUE);
        }
        else {
            checkBox.setState
                    (selectionModel.isPartiallySelected(path) ? null : Boolean.FALSE);
        }
    }
    setBackground(Color.pink);

    removeAll();
    add(checkBox, BorderLayout.WEST);
    add(renderer, BorderLayout.CENTER);
    return this;
}    

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-23 19:56:59

了解TreeCellRenderers的最好地方是从tutorial (在页面底部)。

而不是添加rendererBorderLayout.CENTER,您可以只添加一个不同的图标,任何你喜欢的颜色。

票数 1
EN

Stack Overflow用户

发布于 2010-02-23 20:03:44

为了使您的setBackground(Color.PINK)具有任何可见的效果,您应该在构造函数中将setOpaque(false)更改为setOpaque(true)。也就是说,我赞同@John的建议,即在Sun教程中阅读有关渲染器的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2316685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档