[英]how to use convert model of Jtable
我有一个jTable,我想删除选定的行:
for( int i=0; i<selectedRows.length ; i++){
defaultablemodel.removeRow( selectedRows[i] - i);
int viewRowIndex = jTableMyTable.convertRowIndexToView(i); <<--- convert it here?
}
我搜索了大多数建议,无论何时删除行,都应将行索引转换为视图。 以上是否正确实施? 我遇到此问题是因为对行进行排序后,有时无法删除该行。 但再次排序后,我可以删除一行。 所以我相信我需要使用这个convertRowIndexToView方法。
您实际上应该在使用
convertRowIndexToModel
根据视图将行的索引映射到基础TableModel。 如果模型的内容未排序,则模型和视图索引相同。 您具有选定的行,即view
中的选定索引。 因此,您需要在删除之前将这些索引转换为模型索引。
当您使用convertRowIndexToView
,您实际上在做相反的尝试,尝试将模型索引转换为表索引。
“以上内容是否正确实施?”
首先,当您要以这种方式删除行时,应该从最后一行开始向后遍历索引。 原因是当您删除一行时,索引会更改。 所以你的循环应该像
int [] selectedRows = table.getSelectedRows();
for (int i = selectedRows.length - 1; i >= 0; i--) {
int viewIndex = selctedRows[i];
int modelIndex = table.convertRowIndexToModel(viewIndex);
model.removeRow(modelIndex);
}
关键是要先删除最高的索引,然后再向下移动至较低的索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.