我有一個JTable與實例作爲模型:爪哇 - JTable中 - 集中小區不允許編輯
TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]);
其中產生的陣列。但是,目前,您仍然可以編輯單元格。我怎樣才能防止這一點?
謝謝!
我有一個JTable與實例作爲模型:爪哇 - JTable中 - 集中小區不允許編輯
TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]);
其中產生的陣列。但是,目前,您仍然可以編輯單元格。我怎樣才能防止這一點?
謝謝!
擴展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;
}
};
子類或創建DefaultTableModel
的匿名版本並覆蓋isCellEditable
方法。
在你的第一個例子中,它可以簡單地'return!(column == 1);' – mre 2012-03-22 22:44:42
@mre:是的,它可以。 :) – 2012-03-22 22:53:28
謝謝,爲我工作。 :) – 2013-03-25 21:09:07