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