//监听单击事件,放到jbinit里面或其它地方。
jTable1.getTableHeader().addMouseListener(new java.awt.event.MouseAdapter() {  public void mouseClicked(MouseEvent e) {
        this_mouseClicked(e);
  }
}); 
  void this_mouseClicked(MouseEvent e) {
    if (e.getSource() == getTableHeader()){
       //单击的表头列。
       int tableColumn = getTableHeader().columnAtPoint(e.getPoint());
       int modelcolumn = this.convertColumnIndexToModel(tableColumn);
       sort_table(modelcolumn);
    }
  }

解决方案 »

  1.   

    //看看这段程序
    import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    import javax.swing.table.*; public class HeadDemo extends JFrame { 
     private JTable table;  public HeadDemo(){  setContentPane(new JPanel());  TableModel model = new AbstractTableModel() { 
      public int getColumnCount() { return 6; } 
      public int getRowCount() { return 25; } 
      public Object getValueAt(int row, int col) {
       return new Integer(row * col); 
      }
     }; table = new JTable(model); 
    table.getTableHeader().addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent me) { 
     Point p = me.getPoint(); 
     JTableHeader header = (JTableHeader)me.getSource(); 
     int selected = header.columnAtPoint(p); 
     System.out.println("Column Header Index: " + selected); 
     }
    });  getContentPane().add(new JScrollPane(table)); 
     pack(); 
     setVisible(true);
    }  public static void main(String[] args) { 
     new HeadDemo ();
     }
    }
      

  2.   

    //因为JTableHeader象其它的swing组件一样,
    //所以MouseListener,和 MouseEvents都可以用。
    //它从jcomponent继承而来,并且实现两个接口
    //TableColumnMouseListener,Accessibleimport javax.swing.*; 
    import javax.swing.table.*; 
    import java.awt.event.*; public class HeaderTable extends JTable { public HeaderTable() { 
     
     setModel(new AbstractTableModel() { 
     public int getColumnCount() { return 6; } 
     public int getRowCount() { return 26;} 
     public Object getValueAt(int row,int col) { return new Integer(row * col); } 
     });; 
     
     getTableHeader().addMouseListener(new MouseAdapter(){ 
     
     public void mousePressed(MouseEvent me) { 
     String buttonMask = new String(); 
     int col = ((JTableHeader)me.getSource()).columnAtPoint(me.getPoint()); 
     int clicks = me.getClickCount(); 
     int mask = me.getModifiers(); 
     switch(mask) { 
      case InputEvent.BUTTON1_MASK: buttonMask = "Left Button"; break; 
      case InputEvent.BUTTON3_MASK: buttonMask = "Right Button"; break; 
      default: buttonMask = "A button that is neither left nor right (or a combination)"; 
     } 
     System.out.println(buttonMask + " clicked on column: " + col + " " + clicks + " time(s)."); 
     } 
     }); 
    } public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     JPanel panel = new JPanel(); 
     HeaderTable table = new HeaderTable(); 
     JScrollPane pane = new JScrollPane(table); 
     panel.add(pane); 
     frame.getContentPane().add(panel); 
     frame.setSize(500,500); 
     frame.setVisible(true); 
     }