[英]Make a column non-editable in a JTable
我使用Netbeans
创建了一个MasterDetail Simple Form
,并且我有一个与数据库相关的JTable
。
我想编辑此JTable
一列以使其不可编辑。
我用谷歌搜索了一下,我能找到的就是这些:
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 );
禁用用户对 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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.