gpt4 book ai didi

java - 如何使用Jtable的转换模型

转载 作者:行者123 更新时间:2023-12-01 18:26:52 25 4
gpt4 key购买 nike

我有一个 jTable,我想删除选定的行:

   for( int i=0; i<selectedRows.length ; i++){                  
defaultablemodel.removeRow( selectedRows[i] - i);
int viewRowIndex = jTableMyTable.convertRowIndexToView(i); <<--- convert it here?
}

我搜索了一下,大多数建议每当删除行时,我们应该将行索引转换为 View 。以上是否正确执行?我遇到这个问题是因为在对行进行排序后,有时无法删除该行。但再次排序后我可以删除一行。所以我相信我需要使用这个convertRowIndexToView方法。

最佳答案

你实际上应该使用

  • convertRowIndexToModel - 将 View 中的行索引映射到基础 TableModel。如果模型的内容未排序,则模型索引和 View 索引相同。

您有选定的行,它们是 View 中选定的索引。因此,您需要在删除之前将这些索引转换为模型索引。

当您使用convertRowIndexToView时,您实际上在做相反的事情,尝试将模型索引转换为表索引。

" Is the above correctly implemented?"

首先,当您想以这种方式删除行时,您应该从最后一行开始向后遍历索引。原因是当您删除一行时,索引会发生变化。所以你的循环应该向后像

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);
}

重点是您要首先删除最高索引,然后逐步降低到较低的索引。

关于java - 如何使用Jtable的转换模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25829652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com