在打开对话框之前实例化一个 TreeViewer
Instantiate a TreeViewer before opening a dialog
我在 jface
Dialog
window 中有一个 TreeViewer
。
treeViewer
需要用 setInput()
填充大量项目。因此 tree
需要花费相当多的时间才能显示,每次对话框 window 已打开。
我想知道是否有任何方法可以预先实例化和保存treeViewer
,以便在打开对话框window时,将treeViewer
添加到对话框 window 并且立即可见。
我不记得曾经见过任何尝试这样做的人。创建树必须在 UI 线程中完成,因此如果不停止 UI.
仍然很难做到这一点
您可以做很多事情:
内容提供商提供的模型对象可以随时构建,因为它们不是 UI 对象。因此,您可以在显示对话框之前在后台获取这些内容。
您可以使用 SWT.VIRTUAL
样式和 ILazyTreeContentProvider
的虚拟树来延迟构建树的各个部分,直到需要它们为止。
如果代码在 Eclipse 插件中,您可以使用 org.eclipse.ui.progress.DeferredTreeContentManager
推迟树的构建部分(关于此方法的文档不多)。
我在 jface
Dialog
window 中有一个 TreeViewer
。
treeViewer
需要用 setInput()
填充大量项目。因此 tree
需要花费相当多的时间才能显示,每次对话框 window 已打开。
我想知道是否有任何方法可以预先实例化和保存treeViewer
,以便在打开对话框window时,将treeViewer
添加到对话框 window 并且立即可见。
我不记得曾经见过任何尝试这样做的人。创建树必须在 UI 线程中完成,因此如果不停止 UI.
仍然很难做到这一点您可以做很多事情:
内容提供商提供的模型对象可以随时构建,因为它们不是 UI 对象。因此,您可以在显示对话框之前在后台获取这些内容。
您可以使用 SWT.VIRTUAL
样式和 ILazyTreeContentProvider
的虚拟树来延迟构建树的各个部分,直到需要它们为止。
如果代码在 Eclipse 插件中,您可以使用 org.eclipse.ui.progress.DeferredTreeContentManager
推迟树的构建部分(关于此方法的文档不多)。