gpt4 book ai didi

java - 使用 AbstractTableModel 从 JTable 中删除或添加行

转载 作者:行者123 更新时间:2023-12-01 14:31:44 26 4
gpt4 key购买 nike

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

TestModel tm = new TestModel() ;

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

对于删除的数据:

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

有什么线索可以解决这个问题吗?任何帮助是极大的赞赏!亲切的问候,罗慕洛·罗梅罗

最佳答案

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

enter image description here

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

附注: fireXXXMethods应该只在模型中调用。因为任何数据的改变都会由模型负责。

关于java - 使用 AbstractTableModel 从 JTable 中删除或添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com