2011-12-14 9 views
4

ソートされたJTableの最後に特定のテーブル行を強制するにはどうすればよいですか?たとえば、列見出しをクリックしてその列で並べ替えると、並べ替え順序に関係なく常にテーブルの最後にある行がいくつか表示されます。これを実現させるにはどうすればいいですか?Java Swing:ソートされたJTableの末尾に特定のアイテムを強制的に挿入する

ありがとうございます!

+1

JTableの設定方法を教えてください。背後でカスタムTableModelが動作していますか、またはDefaultTableモデルを使用していますか? – jpalm

+0

さて、JTableを作成するには、オブジェクトの配列をコンストラクタに渡す必要がありますか?最後の行をソートしないでソートするソートメソッドを実装し、それを実行すると、おそらく必要な機能を実現できます。 – eboix

+0

RowSorterとカスタムコンパレータを使用すると、かなり簡単に解決できます。詳細については、[here](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting)を参照してください。いくつかのコードがなければ、具体的な答えは得られません。 – jpalm

答えて

1

テーブルにDefaultTableModelを使用している場合は、moveRow(startRow、endRow、destinationPosition)APIを使用して問題の行/行をJTableに配置する場所に移動できます。テーブルがソートされるたびに(リスナーが定義されている)、これを行う必要があります。

あなたはこの質問参照することができます:Moving a row in jTableあなたはHow to Use Tables: Sorting and Filteringに示すように、Comparatorインタフェースを実装するか、このexampleのクラスValueに示すように、Comparableインタフェースを実装するか、関連

1

の一種です。いずれの方法でも、比較メソッドの結果を、他のすべての行の後に表示させる方法で変更することができます。

補遺は:Comparableの実装はnatural orderingに影響を与えるだろうが@クレオパトラのanswerノートとして、Comparatorは、テーブルのRowSorterのコンテキストで適用されなければなりません。結果が複雑になり、維持するのが難しい場合は、別のアプローチを検討することをお勧めします。

+0

はコメントを非回答にすることに決めました.--)書くのが快適です。:-) – kleopatra

1

注意:これは答えではなく、難点やリンクの要約の一種です。

これは驚くほど解決しにくい課題の1つです。それをサポートしているSwingXの中でもコアのものはありません:-)特に、コンパレータは、ソート方向について何も知らないため、上端または下端に特定の行を配置する必要があるかどうかを知ることができないため、助けになりません。これを行うことができる唯一の共同作業者は、RowSorterかもしれません。 DefaultRowSorterのすべてが隠されているため、調整は完全な再実装に至ります。より複雑な文脈では、OTNでのhandle nulls had been published by Walter Laanの例とlater described to be tweakedの例です。

+0

+1これを視点に入れます。私はその実装が面倒であるとは考えていませんでした。 – trashgod

+0

@kleopatra http://stackoverflow.com/questions/6187566/problem-formatting-fields-in-a-jtable-differences-between-integer-and-doubleに記載されているバグ(Andrew Thompsonによる)をご覧ください。たくさんのために... – mKorbel

+0

@mKorbelいいえ、それは無関係で、完全に - 何の関係もない – kleopatra

関連する問題