我创建了一个MasterDetail Simple Form
using Netbeans
,并且我有一个JTable
与数据库相关的。
我想编辑其中的一列JTable
以使其不可编辑。
我用谷歌搜索了一下,我能找到的都是:
this.masterTable.getColumn("Validation").setEditable(false);
这对我不起作用!
我创建了一个MasterDetail Simple Form
using Netbeans
,并且我有一个JTable
与数据库相关的。
我想编辑其中的一列JTable
以使其不可编辑。
我用谷歌搜索了一下,我能找到的都是:
this.masterTable.getColumn("Validation").setEditable(false);
这对我不起作用!
覆盖isCellEditable(...)
TableModel 的方法。
DefaultTableModel model = new DefaultTableModel(...)
{
@Override
public boolean isCellEditable(int row, int column)
{
// add your code here
}
}
JTable table = new JTable( model );
对多列禁用 JTable 上的用户编辑
JTable table = new JTable(10, 4) {
@Override
public boolean isCellEditable(int row, int column) {
return column == 3 || column==4 || column==5 ? true : false;
}
};
我使用 GUI 找到了解决方案:
如果您直接扩展 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()
这是 Javadoc:isCellEditable(int, int) 是您想要的方法。如果您使用的是 TableModel,则可以在该 JTable 实例的 TableModel 的子类中覆盖此方法。
如果 jtable 名称是 wordListJTable:
String colTitles[] = {"#", "Word", "Definiton"};
boolean[] isEditable = {false,true,true};
wordTableModel = new DefaultTableModel(colTitles, 0) {
@Override
public boolean isCellEditable(int row, int column) {
// make read only fields except column 0,13,14
return isEditable[column];
}
};
// The 0 argument is number rows.
wordListJTable.setModel(wordTableModel);