我遇到了 Jtable 和我的 dataModel 的问题。我的表模型扩展了 AbstracttableModel,数据存储在 Vector 中。我有一个功能,女巫应该删除一行或多行。这些行不一定是连续的,因为我的 jtable 将 selectionMode 设置为:
jTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
删除行的功能(一一):
public void removeMessageRow(Integer p_idMessage) {
Enumeration<MlMessage> alldatas = vData.elements();
while (alldatas.hasMoreElements()) {
MlMessage m = alldatas.nextElement();
if (m.getIdMessage() == p_idMessage) {
int idx = vData.indexOf(m);
boolean result = vData.remove(m);
// fireTableDataChanged();
// fireTableRowsDeleted(idx, idx);
fireTableStructureChanged();
return;
}
}
当我启动该功能时,我执行循环没有问题,在逐步模式下,我可以看到更新的 vData 对象,如果我只执行一次,则 GUI 没有问题。当我选择多行时出现问题。例如,我在表中选择了第 0 行和第 1 行,并启动了函数 removeMessageRow,在第一次执行时,vDataObject 被正确更新(所有数据都被转移,并且这个向量的最后一个元素被设置为 null拨电至vData.remove(m)
. 因此,在我的情况下,我希望在第二次执行时,要查找的对象应该位于位置 0,但它位于位置 1,因为 vData 对象从未更新过。有人对此有想法吗?我已经尝试过很多着火的东西......但没有人可以立即执行。感谢您提前提供的任何帮助,并对我的莎士比亚语言感到抱歉。