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(0, new Comparator<String>() の行で0を1にすれば、
データ2で数値のソートができる。

0 件のコメント:
コメントを投稿