java - 禁用时 JTree 的自定义节点图标

标签 java swing jtree

我有一个 JTree,其中我根据树中的节点深度显示不同的图标,这是我使用以下代码完成的:

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

        super.getTreeCellRendererComponent(tree, value,
        selected, expanded, leaf, row, hasFocus);

        int level = ((DefaultMutableTreeNode) value).getLevel());
        JLabel label = (JLabel) this ;
        if(level == 0) {
            label.setIcon( new ImageIcon("icon1.gif") ) ;
        }else if(level == 1) {
            label.setIcon( new ImageIcon("icon2.png") ) ;
        }
        return this;
    }

这正如我所期望的那样工作,除了如果 JTree 组件被禁用,图标将恢复为默认的(禁用)版本。 我是否需要创建我的图标的禁用版本,如果需要,如何使用此方法设置它们。我尝试添加:

if(!tree.isEnabled()) {
    label.setIcon( new ImageIcon("icon1_disabled.gif") ) ;
}

...但我仍然保留禁用组件中的默认值。任何正确方向的提示都将不胜感激。

最佳答案

使用 label.setDisabledIcon(new ImageIcon("icon1_disabled.gif"));。我对其进行了测试,似乎工作正常。

关于java - 禁用时 JTree 的自定义节点图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7478561/

相关文章:

java - 如何在 Java ProgressMonitor 中省略 "Cancel"按钮?

Java - 不支持的音频文件异常

java - Jtree节点扩展无选择

java - JTree 影响 JLabel

java - Antisamy 将单引号转换为双引号

java - 如何在浏览器中运行Java小程序(使用CMD)

java - 覆盖动态创建的各个 JTable 单元格的单元格编辑器

java - JTree 在更改节点名称时更改 lineStyle

java - 是否可以在构造函数中的 super() 之前进行计算?

java - YouTube 搜索查询始终返回相同的视频列表