ソートされたJTableの最後に特定のテーブル行を強制するにはどうすればよいですか?たとえば、列見出しをクリックしてその列で並べ替えると、並べ替え順序に関係なく常にテーブルの最後にある行がいくつか表示されます。これを実現させるにはどうすればいいですか?Java Swing:ソートされたJTableの末尾に特定のアイテムを強制的に挿入する
ありがとうございます!
ソートされたJTableの最後に特定のテーブル行を強制するにはどうすればよいですか?たとえば、列見出しをクリックしてその列で並べ替えると、並べ替え順序に関係なく常にテーブルの最後にある行がいくつか表示されます。これを実現させるにはどうすればいいですか?Java Swing:ソートされたJTableの末尾に特定のアイテムを強制的に挿入する
ありがとうございます!
テーブルにDefaultTableModelを使用している場合は、moveRow(startRow、endRow、destinationPosition)APIを使用して問題の行/行をJTableに配置する場所に移動できます。テーブルがソートされるたびに(リスナーが定義されている)、これを行う必要があります。
あなたはこの質問参照することができます:Moving a row in jTableあなたはHow to Use Tables: Sorting and Filteringに示すように、Comparator
インタフェースを実装するか、このexampleのクラスValue
に示すように、Comparable
インタフェースを実装するか、関連
の一種です。いずれの方法でも、比較メソッドの結果を、他のすべての行の後に表示させる方法で変更することができます。
補遺は:Comparable
の実装はnatural orderingに影響を与えるだろうが@クレオパトラのanswerノートとして、Comparator
は、テーブルのRowSorter
のコンテキストで適用されなければなりません。結果が複雑になり、維持するのが難しい場合は、別のアプローチを検討することをお勧めします。
はコメントを非回答にすることに決めました.--)書くのが快適です。:-) – kleopatra
注意:これは答えではなく、難点やリンクの要約の一種です。
これは驚くほど解決しにくい課題の1つです。それをサポートしているSwingXの中でもコアのものはありません:-)特に、コンパレータは、ソート方向について何も知らないため、上端または下端に特定の行を配置する必要があるかどうかを知ることができないため、助けになりません。これを行うことができる唯一の共同作業者は、RowSorterかもしれません。 DefaultRowSorterのすべてが隠されているため、調整は完全な再実装に至ります。より複雑な文脈では、OTNでのhandle nulls had been published by Walter Laanの例とlater described to be tweakedの例です。
JTableの設定方法を教えてください。背後でカスタムTableModelが動作していますか、またはDefaultTableモデルを使用していますか? – jpalm
さて、JTableを作成するには、オブジェクトの配列をコンストラクタに渡す必要がありますか?最後の行をソートしないでソートするソートメソッドを実装し、それを実行すると、おそらく必要な機能を実現できます。 – eboix
RowSorterとカスタムコンパレータを使用すると、かなり簡単に解決できます。詳細については、[here](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting)を参照してください。いくつかのコードがなければ、具体的な答えは得られません。 – jpalm