2011-12-26 72 views
0

我想排序,只有第一次,一個SWT表列。 我有一個表與他們的TableViewer,我想在setInput方法之後或之前對programmaticaly進行排序。如何強制在表格查看器SWT表中排序

這些列是動態生成的,最後一列是平均列。 有什麼方法按程序排序?

我只用這行代碼:

setInput方法後,我打電話:

// refresh table 
tableViewer.refresh(); 
table.setRedraw(true); 

我需要一個類ViewerSorter?

我不需要用戶干預,我的數據是無序的,在創建動態列之後,我希望程序使用該信息(數字數據)對錶格進行排序。

回答

0

是的,使用ViewerSorter,它將始終保持TableViewer的順序。

+0

我可以使用viewerSorter只適用於一列嗎?我認爲我對最後一列(AVG)有問題,因爲它不是ViewerSorter收到的對象(e1和e2)的參數。 – Nicolas400 2011-12-26 18:21:28

+0

它只處理查看器的元素,所以它不是專用於列。如果需要,您需要通過其他方式獲取AVG,例如在ViewerSorter中計算它或將其存儲在HashSet中。 – 2011-12-26 18:24:31

+0

它的工作,不幸的是我必須在LabelProvider中複製邏輯,所以有兩次進入休眠狀態:(。如果內存中的數據可以排序,我會喜歡。 – Nicolas400 2011-12-26 18:38:19

0

如果妳想要排序(整數,字符串簡單的對比)的默認行爲,你可以只設置分揀機:

viewer.setSorter(new ViewerSorter()); 

和觀衆將被排序的所有的時間(例如,在刪除後,數據的增加)