簡體   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