我有一个JTable,我需要删除一行,即选定的行。
所以首先,我得到表模型:
DefaultTableModel model = (DefaultTableModel) table.getModel();
然后是选定的行(如果选择了第二行,则返回1,这是可以理解的,因为行从零开始):
int selectedRow = table.getSelectedRow();
然后,我尝试删除该行:
model.removeRow(selectedRow);
然后我再次设置表模型:
table.setModel(model);
这实现的是删除完全随机的行。我根本不明白为什么。我已经使用table.setRowSorter(sorter)对表进行了排序,但是我不知道为什么这应该是一个问题。如果绝对需要SSCCE,请告诉我,因为在生产一个SSCCE之前,我需要修改很多代码。
注意:这两行返回的值不同:
System.out.println(table.getValueAt(selectedRow, 1));
System.out.println(model.getValueAt(selectedRow, 1));
最佳答案
如果JTable
已过滤或排序,则可以转换
int modelRow = convertRowIndexToModel(row);