The Java Program: SortMouseListener.java

  1 import java.awt.event.MouseEvent;
  2 import java.awt.event.MouseAdapter;
  3 
  4 import javax.swing.JTable;
  5 import javax.swing.table.JTableHeader;
  6 import javax.swing.table.TableColumn;
  7 
  8 // requires SortTableModel;
  9 
 10 public class SortMouseListener extends MouseAdapter {
 11 
 12    private static boolean implementsComparable (final Class c) {
 13       final Class[] interfaces = c.getInterfaces();
 14       for (int i = 0; i<interfaces.length; i++) {
 15          if (interfaces[i].equals(java.lang.Comparable.class)) {
 16             return (true);
 17          }
 18       }
 19       return (false);
 20    }
 21          
 22    public void mouseClicked (MouseEvent event) {
 23       final JTableHeader header = (JTableHeader)(event.getSource());
 24       final int column = header.columnAtPoint (event.getPoint());
 25       // convert visible column index to a column index in the model
 26       int index = header.getColumnModel().getColumn(column).getModelIndex();
 27       final JTable table = header.getTable();
 28       final SortTableModel model = (SortTableModel) table.getModel();
 29       final Class dataType = model.getColumnClass(index);
 30 
 31       if (implementsComparable (dataType)) {
 32          model.sortRows (index);
 33       }
 34 
 35       table.setColumnSelectionInterval (column, column);
 36    }
 37 }