0

TreeViewer我用这样的树结构顾问构建了一个:

public class ExplorerTreeStructureAdvisor extends TreeStructureAdvisor {

    @Override
    public Object getParent(Object element) {
        return ((Node)element).getParent();
    }

    @Override
    public Boolean hasChildren(Object element) {
        if(element instanceof Folder){
            Folder folder = (Folder)element;
            return !folder.getChildren().isEmpty();
        }
        return false;
    }

}

有了这样的TreeStructureAdvisor,该树中的空文件夹将没有展开按钮。当某些用户操作发生时,一些子节点将被添加到该空文件夹中,通知树树结构已更改的最佳方法是什么?

我认为,TreeViewer#refresh()可能可行,但出于性能考虑,当我们知道只有一个节点被更改时,刷新整棵树并不好。

4

1 回答 1

1

在这种情况下,您应该真正依靠您的数据模型来通知更改的数据。这意味着当某些用户操作修改您的数据模型时,它应该负责通知相关组件有关更改。然后,您可以将“数据更改侦听器”添加到模型中,并通过 仅刷新更改的对象TreeViewer#refresh(Object)

于 2013-04-26T14:00:55.617 回答