我使用MasterDetail Simple Form
创建了Netbeans
,并且我有一个与数据库相关的JTable
。
我想修改此JTable
中的列,使其不可编辑。
我用Google搜索了这一切,我发现了这一切:
this.masterTable.getColumn("Validation").setEditable(false);
这对我无效!
答案 0 :(得分:10)
覆盖TableModel的isCellEditable(...)
方法。
DefaultTableModel model = new DefaultTableModel(...)
{
@Override
public boolean isCellEditable(int row, int column)
{
// add your code here
}
}
JTable table = new JTable( model );
答案 1 :(得分:3)
我使用GUI找到了解决方案:
答案 2 :(得分:3)
禁用JTable上针对多列的用户编辑
JTable table = new JTable(10, 4) {
@Override
public boolean isCellEditable(int row, int column) {
return column == 3 || column==4 || column==5 ? true : false;
}
};
答案 3 :(得分:2)
如果您直接扩展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的);
答案 4 :(得分:1)
isCellEditable()
这是Javadoc:isCellEditable(int, int) 是你想要的方法。如果您正在使用TableModel,则可以在TableModel的子类中为该JTable实例覆盖此方法。
答案 5 :(得分:0)
如果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);