JXTreeTableでの並べ替えが無効になっていることを知っています。JXTreeTableでトップ要素を並べ替える方法
しかし、ルートノードの直接の子の値のみに基づいてすべての列を並べ替えることができます。最初のレベルのノードに
Name /Date /File UID
(Root)
|- Mr. X /1996/10/22/AE123F6D
|--- File1/2012/01/10/DFC2345Q
|--- File2/2012/01/11/D321FEC6
|- Mrs. Y/1975/03/03/G2GF35EZ
|--- File3/2012/02/29/35GERR32
|--- File4/2012/01/22/LKJY2342
.
.
.
私は何を達成したいことは3列でソートされます。
は、私がこのような構造を持っていると言います。それはそのように終わるだろう、私は日付の昇順で、それをソートしたいと言う:Name /Date /File UID
(Root)
|- Mrs. Y/1975/03/03/G2GF35EZ
|--- File3/2012/02/29/35GERR32
|--- File4/2012/01/22/LKJY2342
|- Mr. X /1996/10/22/AE123F6D
|--- File1/2012/01/10/DFC2345Q
|--- File2/2012/01/11/D321FEC6
.
.
.
私はそれを見ると、それはソート単純なテーブルにressembles(そうソートを無効にするために呼び出さ階層制限が解除されます)。
が、私はそれを行うための2つの可能性を参照してください。
- 再度有効にすでに実装されているすべての恩恵を受けるためにJXTableで利用可能なソート機構(見出しをクリックするとソートソーター、...)と最初のレベルのノードをソートするだけです(子が同じ親を持つため)。
- 私は必要なものを実装しています(ほとんどの場合、ヘッダをクリックしてソートします)、JXSortableTreeModelのmodel-row-idsのリストを持っていて、convertRowIndexToModelをオーバーライドしています。欲しいです。
私のお気に入りはもちろん最初のものですが、達成方法はわかりません。最初の制限は、JXTreeTableがsetSortable()(および関連するすべてのメソッド)をオーバーライドするのでソートを再び有効にする方法がわからず、JXTableのメソッドの実装に直接アクセスする方法がわかりません(Javaの問題です)。私は単純にJXTreeTableのコードをコピーし、上書きを削除することができますが、それは私の意見では選択肢ではありません。
私はこれを解決すると言いますが、どのようにしてソートを第1レベルのノードに制限しますか?ソースを見た後でも、私はそれをどうやって行うのかがむしろ分かりません。
2番目のコードでは、既存のコードのすべての利点を失っていますが、私が望むものを実現するための実用的な方法があります(今のところ、少なくともすべての行のデータをフィルタリングしたくない場合は誰ですか? )。
別の方法がありますか?そうでない場合は、私のソリューションのどちらを選択すればよいですか?どんな洞察力のあるコメント?
事前に感謝します。
ありがとうございます!私はTreeTableのソースを閲覧しましたが、これは有望です。私は後でもっとよく見てみるつもりです:) – ixM
Aephyrのソリューションはうまくいきますが、ソースコードにはほとんどドキュメンテーションやコメントは含まれていません。デモは良い例ですが、私はまだEDTにいくつかの例外がスローされています。このようなコードで、これらの問題や将来の問題をデバッグし、サポートすることの頭痛は、私にとって大したものではありません。 – Nate
@nateこれは、偉大なスイング教祖の1人、コードのデポで、いくつかのフォーラムでは、メンバーがメンバーです、EDTの例外や違反については考えられません。コードから二次的な問題がある必要があります:-) – mKorbel