2013-01-16 40 views

回答

0

如果你想排序而不是其他,你必須實現一個監聽器。我用過這樣的東西:

table.getTableHeader().addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent e) { 
      int col= table.getTableHeader().columnAtPoint(e.getPoint()); 
      // column number col has been clicked -- sort if necessary, 
      // discard the event if sorting is not desired. 
      // 
     } 

    }); 

小心可以拖放行的表;你可以用

table.getTableHeader().setReorderingAllowed(false); 
+0

這不工作,你只添加額外的邏輯,但你不阻止現有mouselisteners和排序邏輯可應用於......測試是這樣的: table.getTableHeader()addMouseListener將(新MouseAdapter(){ @Override public void mouseClicked(MouseEvent e){ return; } }); – ruben056

+0

這並不妨礙現有的聽衆發射。但是,如果你使用的是BasicTableHeaderUI(正如我所期望的那樣),你可以設置ReRederingAllowed爲false(如圖所示),它將起作用。 – cneller

5

(例如,僅pseudo_code,一切都在那裏硬編碼例如,必須覆蓋來自ColumnModel的列)

if (column >= 0 && column < getModelWrapper().getColumnCount() 
    && isSortable(column)) { 

if (column >= 0 && column <=1 /*getModelWrapper().getColumnCount()*/ 
    && isSortable(column)) { 

public void toggleSortOrder(int column) {

然後第二列是不可排序

  • 如果不幫助你更好地幫助越早張貼SSCCE證明您的問題
相關問題