0

列の順序に応じて値を並べ替えることができるテーブルビューアーを実装しています。たとえば、column1-column2-columnX は、最初に列 1 の値で行を並べ替え、次に列 2、列....

したがって、ColumnViewerSorter、特にメソッド「int doCompare(Viewer viewer, Object e1, Object e2);」を使用したいと考えています。

このメソッド内で、比較のために他のTableviewer行/セルに応じてソートしたいのですが、JFaceテーブルビューアーがビューでのみソートを行うのが難しいため、テーブルビューアー自体に「列1」などの実際の値を「尋ねる」必要があります、行 20"

「docompare」内で関数「viewer.getElementAt(index)」を使用しても問題ありませんが、docompare 内では、テーブルビューアー内のオブジェクト e1 および e2 位置への参照がありません。

どうすればそれを達成できますか?

私を助けてくれてありがとう

よろしくお願いします、

マルコム

4

1 に答える 1

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

これは最良の例ではないかもしれませんが、「複数の並べ替え」を実現するには、ユーザーは目的の列を逆の順序で並べ替えるだけで済みます。

于 2010-06-22T11:20:18.983 に答える