我有一个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);

10-07 20:12