Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何提高jface treeviewer的扩展性能?_Java_Swt_Eclipse Rcp_Jface_Treeviewer - Fatal编程技术网

Java 如何提高jface treeviewer的扩展性能?

Java 如何提高jface treeviewer的扩展性能?,java,swt,eclipse-rcp,jface,treeviewer,Java,Swt,Eclipse Rcp,Jface,Treeviewer,我有一个拥有7000多个节点的JFace treeviewer,当我在根元素上执行expand all时,展开大约需要2分钟 我尝试调用expandAll()和expandToLevel(Object,level),但性能仍然保持不变 有没有办法在更短的时间内扩展树 你想一次把整棵树都展开吗?您研究过使用吗?不完全是整个树,但根据节点的选择,我有一个处理程序,它将调用expandToLevel(),即使是这个选择的节点,如果它有大量的子节点,也需要时间。在创建树查看器时,我尝试使用SWT.VIR

我有一个拥有7000多个节点的JFace treeviewer,当我在根元素上执行expand all时,展开大约需要2分钟

我尝试调用
expandAll()
expandToLevel(Object,level)
,但性能仍然保持不变


有没有办法在更短的时间内扩展树

你想一次把整棵树都展开吗?您研究过使用吗?不完全是整个树,但根据节点的选择,我有一个处理程序,它将调用
expandToLevel()
,即使是这个选择的节点,如果它有大量的子节点,也需要时间。在创建树查看器时,我尝试使用
SWT.VIRTUAL
,但性能仍然保持不变。这是正确的方法吗?您是否对SWT.VIRTUAL使用了
ILazyTreeContentProvider
?虚拟本身没有任何作用。即使这样,树查看器的性能也很差,因为需要分配太多的内存。当我在展开之前使用setRedraw(false),然后在展开之后将其设置为setRedraw(true)时,我看到了70%的改进。可以找到相关文章,我想在树展开时显示
ProgressBar
,但
ProgressBar
不显示进度(在起点卡住),但树在后台展开。树扩展完成后,进度条将关闭。我唯一关心的是为什么
ProgressBar
没有显示进度(在起始点卡住)。我使用了
Display.getDefault().asynceec()
Display.getDefault().syncExec()