在打开对话框之前实例化一个 TreeViewer

Instantiate a TreeViewer before opening a dialog

我在 jface Dialog window 中有一个 TreeViewertreeViewer 需要用 setInput() 填充大量项目。因此 tree 需要花费相当多的时间才能显示,每次对话框 window 已打开。

我想知道是否有任何方法可以预先实例化和保存treeViewer,以便在打开对话框window时,将treeViewer添加到对话框 window 并且立即可见。

我不记得曾经见过任何尝试这样做的人。创建树必须在 UI 线程中完成,因此如果不停止 UI.

仍然很难做到这一点

您可以做很多事情:

内容提供商提供的模型对象可以随时构建,因为它们不是 UI 对象。因此,您可以在显示对话框之前在后台获取这些内容。

您可以使用 SWT.VIRTUAL 样式和 ILazyTreeContentProvider 的虚拟树来延迟构建树的各个部分,直到需要它们为止。

如果代码在 Eclipse 插件中,您可以使用 org.eclipse.ui.progress.DeferredTreeContentManager 推迟树的构建部分(关于此方法的文档不多)。