свой TreeCellRenderer и L&F
От: VaGon Россия  
Дата: 18.10.05 03:42
Оценка:
Столкнулся с забавной проблеммой.
Некая структура данных отображается с помощью 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 просто напросто не перерисовываются и остаются в первоначальном виде.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.