事情是这样的:一个由 JTableModel 支持的可排序 JTable,它带有一组填充行的对象(一个对象 = 一行)。需要删除行。
不排序,删除对象很简单:获取选中的行索引,删除同一索引下的数组对象。但是,通过排序,行索引在某种意义上会变得混乱,因为它们不再匹配支持数组对象的索引。克服这个问题的正确方法是什么?
奥斯卡几乎是对的,应该这样做:
int selectedRow = table.getSelectedRow();
tableModel.removeRow(table.convertRowIndexToModel(selectedRow));
我认为(不太确定)有一种像“modelToView”这样的方法,它返回视图索引所代表的模型中的实际索引。
因此,例如,您有 A、B、C、D,然后您对 desc 进行排序。D,C,B,A 此方法将为视图索引 3 ( A ) 返回 0
我认为这是在支持排序的 JXTable 上或在 Java 6 中的 JTable 上。
如果您自己建立了这种排序,请考虑添加此方法。