- 締切済み
SwingのJTableでのsort方法
JTable上に以下のようなデータを表示してあります。 合計 国語 数学 英語 Aさん 250 100 80 70 Bさん 230 100 90 40 Cさん 200 70 80 50 今、合計の降順に並んでいますが、 これを、コマンドボタンクリックにより、 英語の降順に並びなおそうと考えています。 1度2次元配列にデータを代入し、arrays.sortで、 並び替え、再度、Jtableで表示するつもりです。が、 jTableに、もっと簡単に並び替えて表示させる 方法はないでしょうか? よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ngsvx
- ベストアンサー率49% (157/315)
ご質問から推測すると、データをDefaultTableModeにセットして JTableへ表示しているのだと思いますが、 TableModeをAdapterとして使用したらどうでしょうか? ソート後にDefaultTableModeへ戻す作業がいらなくなります。 (ただし、Adapterを作る必要がある) 概略としては、 1.データは配列等に格納しておく(ソート出来る状態) (配列の代りにArrayListでもいいと思います) 2.AbstractTableModelを拡張しAdapterを作る。 JTableは表示するための情報として、 ・getRowCount() ->行数 ・getColumnCount() ->列数 ・getValueAt(rowIndex,columnIndex) ->指定セルの値 ・getEditable() ->編集可能か を呼び出すため、これらのメソッドをオーバーライドして、 適切な値を返すようにする。 *データを格納した配列等から情報を取得し、そのまま返す。 例: public Object getValueAt(int rowIndex,int columnIndex){ return data[rowIndex][columnIndex]; } 3.データの更新後、ソート実行後には、AbstractTableModelのfireTableChanged() を呼び出す。 コードの量としては、むしろ増えるかもしれませんね。 しかし、データをDefaultTableModeにセットするよりは、 後で応用が利きやすいと思います。