2013-02-21 73 views
1

我目前有一個大表格(aprox 1000行)和大約20列。在20列中,我需要每2-3秒刷新一次(從創建對象起持續時間),我嘗試過每隔3秒刷新整個表格,但由於行數太多,這是一個很大的性能這整個表格的罰款更新。只刷新SWT/JFace TableViewer中的一列/單元格

任何人都看到一種方法來刷新JFace tableviewer中只有一個單元格/一列?我需要一個經過時間列刷新,就是這樣。

任何幫助,非常感謝。

感謝 米爾恰

回答

2

我看到TableViewer並不希望刷新連續的一個單元格。

AbstractTableViewer 
protected void doUpdateItem(Widget widget, Object element, boolean fullMap) 

您需要重寫上述方法。當前實現刷新整個行(基本上在每個單元調用LabelProvider

您也可以按照相同的實現,但是調用特定的ViewerCell

+0

謝謝你。基於此,我設法做了類似的事情。我發現這是更新單個單元格的唯一方法,方法是擴展表格查看器,從而訪問一些受保護的方法,這些方法允許我訪問tableviewer中的單個單元格。 – Mircea 2013-02-23 05:46:57

1

的TableViewer中的刷新()方法,就是要觸發時,表示您的錶行的模型對象列表中被改變。如果您只需要更新特定行或單元格中顯示的文本或圖像,則應該使用update()方法。有這種方法的變體,可以讓您根據需要儘可能少地更新。

+0

更新我已經嘗試更新()很好,但似乎無論怎樣我打電話它(不管我使用什麼變體......),它總是會更新整條線,這對我來說是不可接受的,因爲它會導致很大的性能損失。 – Mircea 2013-02-21 21:02:10

+0

我從來沒有見過單行更新花費大量時間。我會看看你的標籤提供者實現。也許你在那裏做得太多了。如果您在標籤提供程序中執行大量計算,則應考慮緩存結果,以便標籤查找是即時的。 – 2013-02-21 22:10:22

+0

更新單行需要非常少的時間,但我有5k行,更新必須每2-3秒完成一次,因此您可以想象負載。 – Mircea 2013-02-22 11:46:00

相關問題