Столкнулся с забавной проблеммой.
Некая структура данных отображается с помощью JTree, так как у элементов структуры есть несколько фикрисованных состояний, то был реализован свой класс
public class StateRenderer extends DefaultTreeCellRenderer {
Icon[] stateIcon= new Icon[7];
public StateRenderer(Icon[] icons){
stateIcon=icons;
}
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
boolean sel,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(
tree, value, sel,
expanded, leaf, row,
hasFocus);
setIcon(stateIcon[getStateIndex(value)]);
return this;
}
private int getStateIndex(Object value){
// собственно тут определяем состояние
return ((StateFileTreeNode)value).getState();
}
}
класс StateFileTreeNode наследует DefaultMutableTreeNode.
собственно проблема возникает при смене LookAndFeel, ноды JTree просто напросто не перерисовываются и остаются в первоначальном виде.