gpt4 book ai didi

java - 从 JTable 中删除正在编辑的行

转载 作者:搜寻专家 更新时间:2023-11-01 01:57:06 25 4
gpt4 key购买 nike

我有一个 JTable 和它旁边的一个调用 deleteSelectedRows() 的按钮,它确实像它听起来的那样:

public void deleteSelectedRows() {
int[] selected = jTable.getSelectedRows();
for(int i = selected.length - 1; i >= 0; i--) {
model.removeRow(selected[i]);
}
if(model.getRowCount() < 1) {
addEmptyRow();
}
}

但是如果一个单元格(和/或它上面的单元格)被删除时正在被编辑,则被编辑的单元格保留而其余单元格离开,就像这样:

然后尝试退出编辑时抛出一个 ArrayIndexOutOfBoundsException,因为第 5 行正在尝试访问并且表中只剩下一行。

然后我用 jTable.getEditingRow() 尝试了各种有趣的游戏。起初,在删除之前添加 if(selected[i] != editing) 似乎可行,但随后删除已编辑单元格上方的行导致了问题。

然后我试了一下:

public void deleteSelectedRows() {
int[] selected = jTable.getSelectedRows();
int editing = jTable.getEditingRow();
for(int s : selected) { //PS: Is there a better way of doing a linear search?
if(s == editing) {
return;
}
}
for(int i = selected.length - 1; i >= 0; i--) {
model.removeRow(selected[i]);
}
if(model.getRowCount() < 1) {
addEmptyRow();
}
}

但这不会删除任何东西。从我散布的 println 来看,最后一个要突出显示的单元格(在 spam 上有特殊边框)被认为是编辑行的一部分,因此触发我早点回来

所以我真的不在乎解决方案是否涉及修复原始问题——当正在编辑的单元格被删除时古怪的结果——或者这个新问题——getEditingRow() 没有像我预期的那样表现,只是我需要至少其中之一发生。也就是说,出于学术好奇心,我很想听听这两种解决方案。提前致谢。

最佳答案

在从模型中删除任何行之前尝试包含以下行:

if (table.isEditing()) {
table.getCellEditor().stopCellEditing();
}

关于java - 从 JTable 中删除正在编辑的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6349386/

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