• 締切済み

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に、もっと簡単に並び替えて表示させる 方法はないでしょうか? よろしくお願いいたします。

みんなの回答

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

ご質問から推測すると、データを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にセットするよりは、 後で応用が利きやすいと思います。

関連するQ&A