2011-12-26 64 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()); 

和观众将被排序的所有的时间(例如,在删除后,数据的增加)