我創建使用Netbeans
一個MasterDetail Simple Form
,我有一個JTable
這是關係到數據庫。使列不可編輯JTable中
我想編輯在此JTable
列,使其不可編輯。
我Google一下吧,這一切我可以找到:
this.masterTable.getColumn("Validation").setEditable(false);
,不會與我合作!
我創建使用Netbeans
一個MasterDetail Simple Form
,我有一個JTable
這是關係到數據庫。使列不可編輯JTable中
我想編輯在此JTable
列,使其不可編輯。
我Google一下吧,這一切我可以找到:
this.masterTable.getColumn("Validation").setEditable(false);
,不會與我合作!
重寫的TableModel的isCellEditable(...)
方法。
DefaultTableModel model = new DefaultTableModel(...)
{
@Override
public boolean isCellEditable(int row, int column)
{
// add your code here
}
}
JTable table = new JTable(model);
isCellEditable()
這裏的Javadoc:isCellEditable(int, int) 是你想要的方法。如果您正在使用TableModel,則可以在該JTable實例的TableModel的子類中重寫此方法。
我不知道如何使用它。 –
我發現使用GUI解決方案:
不要使用GUI編輯器來建立UI,你不會學到太多東西。而是自己編寫代碼。 – Amarnath
禁止用戶在JTable的編輯多列
JTable table = new JTable(10, 4) {
@Override
public boolean isCellEditable(int row, int column) {
return column == 3 || column==4 || column==5 ? true : false;
}
};
這裏是解決方案,如果您是直接擴展的JTable:(發生在構造函數中的代碼)
DefaultTableModel tableModel = new DefaultTableModel(data, colNames){
@Override
public boolean isCellEditable(int row, int column)
{
// make read only fields except column 0,13,14
return column == 0 || column == 13 || column == 14;
}
};
this.setModel(TableModel的);
我該怎麼做? –
我無法重寫isCellEditable(...)方法,因爲我的對象直接擴展了JTable類。 –
我已經使用它,但我的單元格仍然可編輯,我寫在isCellEditable返回列== 4但表中的所有單元格仍然可編輯,爲什麼? – mautrok