我正在实现一个tableviewer,它能够根据列顺序对值进行排序。 例如列1 - 列2 - columnX 首先对第1列的值进行排序,然后对第2列,第...列进行排序。
因此我想使用ColumnViewerSorter,尤其是方法 “int doCompare(Viewer viewer,Object e1,Object e2);”
在这个方法中我想根据其他Tableviewer Row / Cells进行排序以进行比较,难点在于JFace tableviewer只在视图中进行排序,因此我必须“询问”tableviewer本身的实际值,例如: “第1栏第20行”
在“docompare”中使用“viewer.getElementAt(index)”函数可以,但是在docompare中我没有引用tableviewer中对象e1和e2的位置。
我怎么能实现这一目标?
非常感谢你提前帮助我
最好的问候,
马尔科姆
答案 0 :(得分:0)
当然,您可以遍历表格查看器中的所有项目,并查看对象e1和e2的位置。
但是......我希望我能正确理解你的问题......你为什么要实施多重分类?
假设您有3列:
Col1 Col2 Col3
-------------------------
a2 b1 c4
a1 b2 c1
a2 b1 c3
要获得排序顺序Col1-Col2-Col3,用户可以单击Col3,然后单击Col2,最后单击Col1:
Col1 Col2 _Col3_
-------------------------
a1 b2 c1
a2 b1 c3
a2 b1 c4
Col1 _Col2_ Col3
-------------------------
a2 b1 c3
a2 b1 c4
a1 b2 c1
_Col1_ Col2 Col3
-------------------------
a1 b2 c1
a2 b1 c3
a2 b1 c4
这可能不是最好的例子,但为了获得“多重排序”,用户只需按相反的顺序对所需的列进行排序。