0

我一直在尝试在从抽象表模型中插入或删除项目后更新表,但是每当我这样做时,不是删除旧记录并替换为新记录,而是保留旧行并且它再次创建所有行而不删除旧的..所以我得到重复的项目,这是我使用的代码:对于插入的数据:

TestModel tm = new TestModel() ;

                    tm.fireTableRowsInserted(records.length, records.length);

对于已删除的数据:

TestModel tm = new TestModel() ;
                    tm.fireTableRowsDeleted(records.length, records.length);

关于如何解决这个问题的任何线索?任何帮助是极大的赞赏!亲切的问候, 罗慕洛·罗梅罗

4

1 回答 1

1

创建一个带有布尔列的表。由于使用此布尔列,您可以删除那些选择删除的行。就像下面的屏幕截图一样,

在此处输入图像描述

然后在你的TableModelmakeList<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();
    }
}

PS: fireXXXMethods应该只在模型中调用。因为任何数据更改都将由模型负责。

于 2013-05-30T08:50:56.590 回答