2011年9月8日木曜日

JTableでの数値のソート

import java.awt.BorderLayout;
import java.awt.Container;
import java.util.Comparator;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
 
public class swingTest {
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");
 
  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  frame.setSize(320, 160);
  // ウインドウの表示場所とサイズ指定
  frame.setLocationRelativeTo(null);
  //frame.setBounds(2500, 200, 300, 150);
 
  // JFrameよりContentPaneを取得
  Container contentPane = frame.getContentPane();
  // ボタンのインスタンスを生成
  JButton button = new JButton("button");
  contentPane.add(button, BorderLayout.SOUTH);
   
  String[][] tabledata = {
       {"10", "1" , "cfd"},
       {"1", "111" , "ade"},
       {"9", "45" , "ree"},
       {"3", "33" , "brt"}};
 
  String[] columnNames = { "データ1", "データ2" ,"データ3"};
   
  DefaultTableModel tableModel = new DefaultTableModel(columnNames,0);
  TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<DefaultTableModel>(tableModel);
  JTable table = new JTable(tableModel);
 
  sorter.setComparator(0, new Comparator<String>() {
   public int compare(String a, String b) {
    return Integer.parseInt(a) - Integer.parseInt(b);
   }
  });
 
  table.setRowSorter(sorter);
 
  for (int i = 0; i < tabledata.length; i++) {
   tableModel.addRow(tabledata[i]);
  }
 
  JScrollPane scroll = new JScrollPane(table);
   
  contentPane.add(scroll, BorderLayout.CENTER);
 
  // ウィンドウを表示
  frame.setVisible(true);
   
 }
  
}
一番左の行で数値のソートが可能です。
sorter.setComparator(0new Comparator<String>() の行で0を1にすれば、
データ2で数値のソートができる。
 

0 件のコメント:

コメントを投稿