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 件のコメント:
コメントを投稿