2011-09-29 67 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中結合。有關更多詳細信息,請參閱此文章(儘管此處沒有特別提及虛擬標記)