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

时间:2016-02-25 14:27:15

标签: dialog swt jface

我在TreeViewer jface窗口中有一个DialogtreeViewer需要使用setInput()填充大量项目。因此,每次打开对话框窗口时,tree显示需要相当长的时间

我想知道是否有任何方法可以事先实例化并保存treeViewer,这样当对话窗口打开时,treeViewer就会被添加到对话窗口中,它就是立即可见。

1 个答案:

答案 0 :(得分:1)

我不记得有什么事情试图这样做。创建树必须在UI线程中完成,因此如果不停止UI,这仍然很难做到。

你可以做很多事情:

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

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

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