package table;
/*
* SortTableDemo.java
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class SortTableDemo extends JFrame {
private JButton btAdd, btSort;
private JTable table;
private JToolBar toolbar;
private DefaultTableModel model;
private TableRowSorter sorter;
public SortTableDemo() {
super("Sort Table Demo");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(400,300);
setLocationRelativeTo(null);
//JComponents erzeugen:
toolbar = new JToolBar();
btAdd = new JButton("Add Data");
btSort = new JButton("Sort DESCENDING");
table = new JTable();
//Layout:
toolbar.add(btAdd);
toolbar.add(btSort);
getContentPane().add(toolbar, BorderLayout.NORTH);
getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
//Table Model setzen:
table.setModel(new DefaultTableModel(
new Object [][] {
{"1", "1", "1", "1"},
{"3", "2", "2", "2"},
{"2", "3", "3", "3"},
{"0", "4", "4", "4"}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
) {
Class[] types = new Class [] {
String.class, String.class, String.class, String.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
});
//Sorter setzen:
model = (DefaultTableModel)table.getModel();
sorter = new TableRowSorter<DefaultTableModel>( model );
table.setRowSorter(sorter);
//sortieren:
sortTable(SortOrder.ASCENDING);
//Listeners:
btAdd.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent evt) {
btAddActionPerformed(evt);
}
});
btSort.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent evt) {
btSortActionPerformed(evt);
}
});
}
//Methode zum Sortieren der ersten Spalte:
private void sortTable(final SortOrder order){
ArrayList<RowSorter.SortKey> list = new ArrayList<RowSorter.SortKey>(1);
list.add(new RowSorter.SortKey(0, order));
sorter.setSortKeys(list);
sorter.sort();
}
private void btSortActionPerformed(final ActionEvent evt) {
sortTable(SortOrder.DESCENDING);
}
private void btAddActionPerformed(final ActionEvent evt) {
String[] rowData = {"G", "5", "5", "5"};
model.addRow(rowData);
rowData = new String[]{"D", "6", "6", "6"};
model.addRow(rowData);
rowData = new String[]{"2", "7", "7", "7"};
model.insertRow(0, rowData);
}
public static void main(final String args[]) {new SortTableDemo().setVisible(true);}
}