仅更新JFace TreeViewer中的可见项

时间:2011-01-10 13:27:03

标签: java swt jface

我实现了一个在TreeViewer中显示数据的Eclipse插件。

树结构在初始化时读取,在运行时不会更改。 LabelProvider用于设置要为每个项目显示的数据。此对象通过阅读我们的硬件来完成此操作。读取值可能需要一些时间(约0.5秒)。每次调试器暂停时以及每次用户单击指定的“刷新”按钮时都会更新值。

我有很多项目和子项目,因此一次读取所有值太费时间了。 因此,我只想读取用户可见的项目数据。

我尝试使用ILazyTreeContentProvider但这只会节省树加载的时间:滚动或展开TreeItem后,可见项添加到要更新的项列表而不是< strong>替换不可见的节点。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

发现它!

我还在使用ILazyTreeContentProvider。 每次调试器停止或单击刷新按钮时,我只需使用tree.clearAll(true)删除所有元素,而不是检查要刷新的元素。删除将调用ILazyTreeContentProvider仅在可见项目上再次执行其工作。