以下是netbeans中包含的GUI构建器创建的jTable的代码。 我将其中一列设置为可编辑(库应用程序的截止日期列) 是的,用户可以编辑该列并输入内容,但是一旦程序关闭,该表就不会保存用户归入这些列的内容!我尝试了很多东西,但似乎什么都没有用!任何帮助将不胜感激!
adultFictionTable = new javax.swing.JTable();
adultFictionTable.setAutoCreateRowSorter(true);
adultFictionTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
adultFictionTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{"Book 1", "8787987897987", "3/1/11"},
{"The Rows And", "2131223", "2/1/11"}
},
new String [] {
"Book Name", "ISBN", "Due Date"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false, false, true
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
adultFictionTable.setName("adultFictionTable"); // NOI18N
adultFictionTable.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
adultFictionTableKeyPressed(evt);
}
});
jScrollPane1.setViewportView(adultFictionTable);
adultFictionTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("adultFictionTable.columnModel.title0")); // NOI18N
adultFictionTable.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("adultFictionTable.columnModel.title1")); // NOI18N
adultFictionTable.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("adultFictionTable.columnModel.title2")); // NOI18N
答案 0 :(得分:3)
答案很简单。每次启动应用程序时,代码都会使用相同的DefaultTableModel
对象填充表,该对象包含您在NetBeans中设置的默认值。
如果您希望应用程序记住输入的值,则需要从模型中检索它们并将它们保存在文件中(例如)。然后,当应用程序再次启动时,您应该从文件中读取这些值并创建一个新的DefaultTableModel
并将值放入其中。然后你应该明确地在你的表中设置这个模型。它将覆盖现有的。
修改强>
以下是一个示例,说明如何检索3列* 16行表的模型,以便通过在其中设置空值来清除其内容:
// Retrieving the model
TableModel model = jTableTranslation.getModel();
// Clearing the model
for (int i=0;i<16;i++) {
for (int j=0;j<3;j++) {
model.setValueAt("", i, j);
}
}
表模型还有.getValueAt(...)
方法来检索内容。