从JTable删除正在编辑的行
|
我有一个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行并且表中只剩下一行。
然后,我用3英镑尝试了各种娱乐和游戏。首先,在删除之前添加ѭ4似乎可行,但随后删除已编辑单元格上方的行会导致问题。
然后我尝试了这个:
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();
}
}
但这永远不会删除任何内容。从我周围散布的ѭ6来看,要突出显示的最后一个单元格(在spam
上看到的特殊边框)被认为是编辑行的一部分,因此触发了我早先的return
。
因此,我并不在乎解决方案是否涉及解决原始问题(删除正在编辑的单元格时古怪的结果)或这个新问题(getEditingRow()
行为不符合我的预期),'只是我至少需要其中一种来做。就是说,出于学术好奇心,我很想听到这两种解决方案。提前致谢。
没有找到相关结果
已邀请:
3 个回复
朗排谎纷瘟
澜悍景哭苟
缝皋
在某些情况下,单元格编辑器可能会拒绝停止编辑, 这可能发生,例如,如果您使用的是一些复杂的编辑器,正在等待对话框中的用户输入。在这种情况下,您应该添加额外的检查:
在您的代码中,您尝试仅删除未编辑的行,但是当单元格编辑器停止编辑时,这也会引发ArrayOutOfBounds异常。最好是在刷新之前将其停止。 最后,似乎还可以在表中设置一个属性:
如此处所述。