2012-03-22 60 views
3

我有一個JTable與實例作爲模型:爪哇 - JTable中 - 集中小區不允許編輯

TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]); 

其中產生的陣列。但是,目前,您仍然可以編輯單元格。我怎樣才能防止這一點?

謝謝!

回答

5

擴展JTable或DefaultTableModel,覆蓋isCellEditable(int row, int column)方法,併爲您不希望用戶能夠編輯的單元格返回false。

舉例來說,如果你不希望用戶能夠修改第2列,那麼你會做這樣的事情:

@Override 
public boolean isCellEditable(int row, int column) { 
    if (column == 1) { 
     return false; 
    } else { 
     return true; 
    } 
} 

注意按MRE的評論,上述方法可壓縮和重新寫爲:

@Override 
public boolean isCellEditable(int row, int column) { 
    return (column != 1); 
} 

如果你不希望用戶能夠編輯的任何單元格,然後只是有這個方法返回false總是:

// anonymous inner class example 
TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]) { 
    @Override 
    public boolean isCellEditable(int row, int column) { 
     return false; 
    } 
}; 
+1

在你的第一個例子中,它可以簡單地'return!(column == 1);' – mre 2012-03-22 22:44:42

+1

@mre:是的,它可以。 :) – 2012-03-22 22:53:28

+0

謝謝,爲我工作。 :) – 2013-03-25 21:09:07