Пользовательский значок узла для 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") ) ;
}
... но я все еще остаюсь с настройками по умолчанию в отключенном компоненте. Любые намеки в правильном направлении будут оценены.
1 ответ
Решение
Использование label.setDisabledIcon(new ImageIcon("icon1_disabled.gif"));
, Я проверил это и, кажется, работает нормально.