Java 我的JTable在返回isEditable为false后双击时仍可编辑?
以下是我更新表格的代码:Java 我的JTable在返回isEditable为false后双击时仍可编辑?,java,swing,jtable,Java,Swing,Jtable,以下是我更新表格的代码: private void UpdateTable() { String sql = "SELECT * FROM product"; pst = conn.prepareStatement(sql); rs = pst.executeQuery(); summaryproductTable.setModel(DbUtils.resultSetToTableModel(rs)); } 这是由Netbeans(7.3.1)生成的代码,我
private void UpdateTable() {
String sql = "SELECT * FROM product";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
summaryproductTable.setModel(DbUtils.resultSetToTableModel(rs));
}
这是由Netbeans(7.3.1)生成的代码,我添加了isEditable,因为我遵循在stackoverflow中找到的指令:
summaryproductTable = new javax.swing.JTable();
summaryproductTable.setFont(new java.awt.Font("Arial", 0, 11)); // NOI18N
summaryproductTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null}
},
new String [] {
"type", "materialcode", "serialnumber", "status", "careof", "date", "name", "accountnumber", "contactnumber"
}
)
{public boolean isCellEditable(int row, int column){return false;}}
);
summaryproductTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
summaryproductTableMouseClicked(evt);
}
});
jScrollPane1.setViewportView(summaryproductTable);
*通过反复试验,我注意到JTable是不可编辑的,但是当您调用UpdateTable()方法时,它又变得可编辑了。在NetBeans中
在复选框中选中表格->属性->可编辑时,右键单击
让它不被选中
简单….您需要在任何实现中重写isCellEditable
DbUtils.resultSetToTableModel(rs)
返回的值。我在整个编程生涯中都没有使用过重写,我该如何确切地做到这一点呢?那么最好从基础开始。这就是您在DefaultTableModel中所做的。当您实现一个已经在超类中定义的方法(在您的例子中是isCellEditable)时,您用自己的方法隐藏了原始实现(并为每个单元格返回false)。如果您不能修改源代码,但需要使用此方法,那么您需要编写一个包装表模型。如果你不知道这意味着什么或者怎么做-对不起,你还没有完成任务的基本知识。