Пользовательский значок узла для JTree, когда отключен - PullRequest
4 голосов
/ 20 сентября 2011

У меня есть 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") ) ;
}

... но я все еще остаюсь с настройками по умолчанию в отключенном компоненте.Будем благодарны за любые подсказки в правильном направлении.

1 Ответ

4 голосов
/ 20 сентября 2011

Используйте label.setDisabledIcon(new ImageIcon("icon1_disabled.gif"));.Я проверил это и, кажется, работает нормально.

...