プロが教えるわが家の防犯対策術!

JTable上に以下のようなデータを表示してあります。
    合計 国語 数学 英語
Aさん  250 100 80 70
Bさん 230 100 90 40
Cさん 200 70 80 50

今、合計の降順に並んでいますが、
これを、コマンドボタンクリックにより、
英語の降順に並びなおそうと考えています。

1度2次元配列にデータを代入し、arrays.sortで、
並び替え、再度、Jtableで表示するつもりです。が、
jTableに、もっと簡単に並び替えて表示させる
方法はないでしょうか?
よろしくお願いいたします。

A 回答 (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にセットするよりは、
後で応用が利きやすいと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!