2011-09-29 70 views
2

我是java界的新手,所以我很抱歉如果我的问题不重要。SWT TreeViewer在填充很多元素时很慢

我正在开发一个Eclipse视图部分,并且正在用以下数据结构填充一个SWT树视图。所有的数据都在内存中:

Node1 
    Child1 
    Child2 
Node2 
    Child1 
    ... 
    Child2915 

我认为这不是一个很大的树,但它被绘制得很慢(10秒)。我在.NET中管理超过10,000个元素的树,并且它可以顺利加载。我不知道我是否已经实现了代码,但是如果我没有拨打BeginUpdate() - EndUpdate(),.NET中也会出现同样的问题。

我必须在Java/SWT中调用类似的东西吗?有关树为什么如此缓慢的任何其他提示?

回答

3

最后,在我的TreeViewer中调用刷新后,我使用了setRedraw(boolean value)

public void refresh() { 
    try { 
     mTreeViewer.getControl().setRedraw(false); 
     mTreeViewer.refresh(true); 
     mTreeViewer.expandAll(); 
    } 
    finally { 
     mTreeViewer.getControl().setRedraw(true); 
    } 
} 
5

创建树来帮助他们进行性能

欲了解更多信息时,您可以使用SWT.VIRTUAL标志,看到这篇文章Virtual Trees and Tables

这也可以用的JFace TreeViewer中结合。有关更多详细信息,请参阅此文章(尽管此处没有特别提及虚拟标记)