我一直试图在从抽象表模型中插入或删除项目后更新表,但每当我这样做时,不是删除旧记录并替换为新记录,旧行保留并创建所有行再次没有删除旧的..所以我得到重复的项目,这是我使用的代码: 对于插入的数据:
TestModel tm = new TestModel() ;
tm.fireTableRowsInserted(records.length, records.length);
并删除数据:
TestModel tm = new TestModel() ;
tm.fireTableRowsDeleted(records.length, records.length);
如何解决这个问题的任何线索? 任何帮助是极大的赞赏! 亲切的问候, Romulo Romero
答案 0 :(得分:1)
创建一个包含布尔列的表。由于使用此布尔列,您可以删除选定要删除的行。就像下面的屏幕截图一样,
然后在TableModel
中制作一个List<StudentDO>
,以便它能保存所有的表数据。
添加一行:
要添加行,只需创建一个新的StudentDO并将其发送到表模型,模型addRow方法将该对象添加到表列表中。
删除行:
对于删除行只需调用一个删除方法,这应该在TableModel
中触发事件,这样模型应该遍历所有行并检查选择哪一行并删除它。
注意:删除行应该从最后而不是从列表的开头完成。
<强> StudentTableModel.java 强>
class StudentTableModel {
// Required methods code goes here.
public void addRow(StudentDO do1) {
data.add(do1);
fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
}
public void deleteRow() {
for(int rowIndex = data.size() - 1; rowIndex >= 0; rowIndex--) {
if(data.get(rowIndex).isSelect()) {
data.remove(rowIndex);
}
}
fireTableDataChanged();
}
}
P.S: fireXXXMethods
只能在模型中调用。因为任何数据更改都将负责模型。