Mega Code Archive

 
Categories / Java by API / Javax Swing Table
 

Extends DefaultTableColumnModel

import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableColumnModel; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; public class MainClass extends JFrame {   public MainClass() {     super("Abstract Model JTable Test");     setSize(300, 200);     setDefaultCloseOperation(EXIT_ON_CLOSE);     DefaultTableModel dtm = new DefaultTableModel(new String[][] { { "1", "2", "3" },         { "4", "5", "6" } }, new String[] { "Names", "In", "Order" });     SortingColumnModel scm = new SortingColumnModel();     JTable jt = new JTable(dtm, scm);     jt.createDefaultColumnsFromModel();     JScrollPane jsp = new JScrollPane(jt);     getContentPane().add(jsp, BorderLayout.CENTER);   }   public static void main(String args[]) {     MainClass ce = new MainClass();     ce.setVisible(true);   } } class SortingColumnModel extends DefaultTableColumnModel {   public void addColumn(TableColumn tc) {     super.addColumn(tc);     int newIndex = sortedIndexOf(tc);     if (newIndex != tc.getModelIndex()) {       moveColumn(tc.getModelIndex(), newIndex);     }   }   protected int sortedIndexOf(TableColumn tc) {     int stop = getColumnCount();     String name = tc.getHeaderValue().toString();     for (int i = 0; i < stop; i++) {       if (name.compareTo(getColumn(i).getHeaderValue().toString()) <= 0) {         return i;       }     }     return stop;   } }