• 締切済み

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

  • ssi77
  • お礼率76% (32/42)
  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • 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

  • iアプリのJavaでソートは?

    Arrays.sort(data);は、iアプリで使えますか? dataが、二次元配列の時はどうするんでしょうか?

    • ベストアンサー
    • Java
  • Pythonの2次元配列のソート

    Python3の2次元配列のソートについて教えて下さい [[1, 2], [1, 3], [2, 4]]のようなリストのソートで 昇順ソートでインデックス0が同じならインデックス1は降順でソートしたいと思ってます。 結果が以下のようになるようにしたいです 1 3 1 2 2 4 よろしくおねがいします。

  • 多次元配列のソートについて

    名前とテストの点, クラスが格納されている 以下のような多次元配列があるとします。 $data[0][0] = 'yamada'; $data[0][1] = '20'; $data[0][2] = 'B'; $data[1][0] = 'katoh'; $data[1][1] = '45'; $data[1][2] = 'A'; $data[2][0] = 'honda'; $data[2][1] = '15'; $data[2][2] = 'E'; $data[3][0] = 'ooyama'; $data[3][1] = '100'; $data[3][2] = 'C'; 上記の配列を得点順にソートして表示したいのですが どのようにすればうまく(昇順、降順)で表示できるのでしょうか?

    • 締切済み
    • PHP
  • 二次元配列のソート PHP

    タイトルのとおりソートを行ってくれる関数を探しております。 $buf[][]の二次元配列の変数を日付の降順に並べ替えたいのですが、そういった関数は用意されていますか? sort()、rsort()では不可能かと思います。 以下、二次元配列の値です。配列三番目の日付の降順で再格納したいです。 ( [0] => Array ( [0] => 1[1] => name1 [2] => 2006-08-18 ) [1] => Array ( [0] => 2 [1] => name2[2] => 2006-08-28 ) [2] => Array ( [0] => 3[1] => name3 [2] => 2006-08-18 ) [3] => Array ( [0] => 4 [1] => name4[2] => 2006-08-18 ) よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Vectorに入ってるデータをJTableに表示するには

    Vectorに入っているデータをJTableに表示させたいのですが、JTableは配列になっており、Vectorに格納されているデータをどう突っ込んでいいかわかりません。 そもそも可能なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • 2次元配列のソート

    2次元配列のデータをソートしたいのですが方法がわかりません。初歩的な質問ですが、ご存知の方、よろしくお願いいたします。 (例) 商品コード、商品名、金額、有効期限のデータを以下のように持っています。 $data[0] = ("001", "商品A", 5200, "2004/5"); $data[1] = ("002", "商品B", 350, "2005/1"); $data[2] = ("003", "商品C", 10800, "2004/3"); ・・・・ データの項目(商品コード、商品名など)数は固定ですが、データ数、内容は変化します。 2次元配列でデータがあり、商品コードで降順にソート、金額で昇順にソートなどのソートを行う方法はありますか? No.760468 で同じような質問があり、array_multisort が回答としてあがっていましたが、上記データの場合ソートできないようなので質問させていただきました。 なお、環境によりデータベースを使用することはできません。

    • ベストアンサー
    • PHP
  • ソート Comparator

    Integer型の変数num(10,4,8,6,9,5)をそれぞれ含むオブジェクト配列aryがあり、それをソートするため Arrays.sort(arry,sortLogic); とした場合、 Comparatorインターフェースを実装したクラスsortLogic内のメソッドで public int compare(Object object1, Object object2) {   return ((ary)object1).compareTo(((ary)object2).num); } とすると、昇順にソート(修正ソートマージ)、また、 return ((ary)object1).compareTo(((ary)object2).num); とすると降順にソートされるみたいなのですが、どのような手順(アルゴリズム)でソートされるのでしょうか?

    • ベストアンサー
    • Java
  • 多次元配列でソートしたい

    たとえば、Yahooオークションとかで、「商品名」「価格」「残り日数」が表示されていて、 それぞれをクリックすると、その列をソートして全体を昇順・降順に並べ替えてくれますよね。 あれを自前のCGIで実現したいのです。 たとえば、3次元配列$hoge[X][Y][Z]を定義し、ここがクリックされたらXをキーにソート、ここがクリックされたらYでソートということをやりたいと思っているのですが、当然こういう機能は無いわけで、自分で作らなくてはいけません。 連想配列とかポインタとか色々考えたのですが、うまく行かず・・・。 どのような実装方法があるでしょうか、アイデアをお聞かせ願えたら嬉しいです。

    • ベストアンサー
    • Perl
  • 配列データからHTMLで表を作成

    PHPのソースでHTMLの表を作成したいと考えています。 $data[0][0]="01/09"; $data[0][1]="国語"; $data[0][2]="45"; $data[1][0]="01/09"; $data[1][1]="数学" $data[1][2]="85" $data[2][0]="01/08"; $data[2][1]="英語"; $data[2][2]="100"; $data[3][0]="01/08"; $data[3][1]="数学" $data[3][2]="25" $data[4][0]="01/07"; $data[4][1]="英語"; $data[4][2]="98"; $data[5][0]="01/07"; $data[5][1]="国語" $data[5][2]="60" ・ ・(いくつか続く) ・ 上記のような多次元配列から以下のようなHTMLの表を作成したいと 考えています。 ------------------------------------------- 科目  |  01/09  |  01/08  |  01/07  |  ------------------------------------------- 国語  |  45    |        |   60  | ------------------------------------------- 数学  |  85    |   25    |        | ------------------------------------------- 英語   |       |   100   |  98   | ------------------------------------------- ・ ・(幾つか続く) ・ ここで科目は上記以外に存在するとします。(社会や体育) 試験を受けていない科目は何も表示しません。 日付のみソートされて格納されています。 また科目はばらばらに格納されています。 日付についてはまた別に配列がありこれを使用しても構いません。 $hizuke[0] = "01/09" $hizuke[1] = "01/08" $hizuke[2] = "01/07" $hizuke[3] = "01/06" $hizuke[4] = "01/05" ・ ・(幾つか続く)(年をまたぐのは考えなくていいです) ・ 上記のようなデータから表を作成したいのですが ロジックがうまく組めません。 何かいい案ないでしょうか? 助けてください。m(_ _)m

    • 締切済み
    • PHP
  • JTableに貼り付けたJButton名の取得がうまくできません

    JTableには、通常のセルの部分とボタンの部分があり、ボタンが選択された際にボタン名を取得したいのですが、セルの値を取得してしまいます。 ボタン名を取得するにはどうしたらよいのでしょうか。 DBからレコードを取得し、それを配列にいれています。 1~3個目は、そのままデータ用の配列に入れ、4~10のフィールドをコマンドボタンの名前としJTableに貼り付けています。 data[0][0] = 1 data[0][1] = 2 data[0][2] = 3 data[0][3] = New JButton(field1) data[0][4] = New JButton(field2) ・ ・ ・ 選択されたセルの値を取得すると「jswing....」となってしまいます。 どなたかご存知でしたら、教えて下さい。

専門家に質問してみよう