2013-04-24 55 views
0

我正在使用以下代碼編輯/取消編輯我的JTable列,但是當用戶重新排列列時,以下代碼不起作用 SSCCE of the代碼如下:JTable編輯/ UnEdit代碼不適用於重新安排的JTable列

import javax.swing.JTable; 
    import javax.swing.table.DefaultTableModel; 
    import javax.swing.table.TableModel; 

    public class Main { 
    public static void main(String[] argv) throws Exception { 
    TableModel model = new DefaultTableModel() { 
    public boolean isCellEditable(int rowIndex, int mColIndex) { 
    boolean flag = false; 
      if (isEdit == true) {  
       if ((vColIndex == tblItem.getColumn("Design").getModelIndex()) 
         || (vColIndex == tblItem.getColumn("ChangedCategory").getModelIndex()) 
         || (vColIndex == tblItem.getColumn("Amount").getModelIndex())) { 
        flag = false; 
       } else { 
        flag = true; 
       } 
      } else { 
       flag = false; 
      }  
      return flag; 
    } 
}; 

JTable table2 = new JTable(model); 
} 
} 
+0

更快速地發佈[SSCCE](http://sscce.org/),簡短,可運行,可編譯,硬編碼值爲'JTable/XxxTableModel',存儲爲本地變量。 – mKorbel 2013-04-24 07:44:14

+0

@mKorbel我編輯過張貼SSCCE。 – 2013-04-24 08:00:16

+0

'我應用了你的解決方案,但它不工作',在幾乎沒有工作的情況下,免責聲明被描述在我的第二。回答(我已刪除)現在我們從結束返回到開始,請問SSCCE的原因,我不在這個線程 – mKorbel 2013-04-24 11:21:18

回答

2

注意模型和視圖索引是等價。如前所述here

JTable提供從模型座標轉換爲視圖座標的方法 - convertColumnIndexToViewconvertRowIndexToView - 以及從視圖座標轉換到模型座標 - convertColumnIndexToModelconvertRowIndexToModel

教程部分討論了Sorting and Filtering行,但該原則也適用於列。缺席complete example,很難確定。

+0

但在我的情況下,我不得不使用 vColIndex == table.convertColumnIndexToView(tblItem.getColumn(「Design」)。getModelIndex()) – 2013-04-24 12:25:07

+0

非常感謝它爲我工作。 – 2013-04-24 12:32:21

+0

很高興你把它分類。 – trashgod 2013-04-24 15:14:42