我在TreeViewer
jface
窗口中有一个Dialog
。
treeViewer
需要使用setInput()
填充大量项目。因此,每次打开对话框窗口时,tree
显示需要相当长的时间
我想知道是否有任何方法可以事先实例化并保存treeViewer
,这样当对话窗口打开时,treeViewer
就会被添加到对话窗口中,它就是立即可见。
答案 0 :(得分:1)
我不记得有什么事情试图这样做。创建树必须在UI线程中完成,因此如果不停止UI,这仍然很难做到。
你可以做很多事情:
内容提供者提供的模型对象可以随时构建,因为它们不是UI对象。因此,您可以在显示对话框之前在后台获取这些内容。
您可以使用SWT.VIRTUAL
样式和ILazyTreeContentProvider
使用虚拟树来延迟构建树的部分,直到需要它们为止。
如果代码在Eclipse插件中,您可以使用org.eclipse.ui.progress.DeferredTreeContentManager
来推迟构建树的部分(没有太多关于此方法的文档)。