The following code demos how to sort multiple columns
in JTable. This example includes two files: SorterDemo.java and TableSorter.java.
//All copyright reserved by www.kidslovepc.com
//No redistribution is allowed without author permission and a back
link to www.kidslovepc.com
// Example from http://www.kidslovepc.com
//www.kidslovepc.com is not responsible for your data loss or any damage.
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.table.*;
import javax.swing.*;
import java.awt.Color ;
import java.awt.Component;
import java.io.*;
public class SorterDemo extends JPanel {
public SorterDemo() {
super(new GridLayout(1,0));
String[] columnNames = {"First Name",
"Last Name",
"Book"};
Object[][] data = {
{"Hugo", "Jone",
"JAVA for dummy"},
{"Harry", "Potter",
"JAVA cook book Seconde Edtion"},
{"Tom", "Sawyer",
"www.kidslovpc.com is cool"},
{"Alice", "Wonder",
"JAVA JTABLE is all in www.kidslovepc.com"},
{"Bill", "Bush",
"JAVA world"}
};
DefaultTableModel dtm=new DefaultTableModel(data,columnNames);
//how use table sorter
TableSorter tableSorter= new TableSorter (dtm);
JTable table = new JTable(tableSorter);
tableSorter.setTableHeader(table.getTableHeader());
tableSorter.setSortingStatus(0,1); //pre-set sorting on first column;
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setColumnSelectionAllowed(true);
//Create the scroll pane and add the table to it.
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
JFrame.setDefaultLookAndFeelDecorated(true);
//Create and set up the window.
JFrame frame = new JFrame("Table Sorter Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
SorterDemo newContentPane = new SorterDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
}