繁体   English   中英

如何使用Jtable的转换模型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM