使用AbstractTableModel 從JTable 高效取得選定行
處理大型資料集時,從JTable 擷取選定行的過程可能會變得低效,因為它涉及順序遍歷所有行。本文提出了一種使用基於 AbstractTableModel 的偵聽器機制的更有效方法。
問題陳述
在第一列中帶有JCheckBox 的JTable 用於行選擇,檢索選定的行需要遍歷所有行以收集已檢查的行。隨著資料集的成長,這將成為一種不可取的方法。
建議的解決方案:實作 TableModel 偵聽器
解決方案包括將 TableModelListener 新增至 JCheckBox 欄位。每當偵聽器類別中 JCheckBox 的狀態發生變更(SELECTED/DESELECTED)時,selectedRows 陣列就會更新。此外,可以在偵聽器類別中呼叫 table.getSelectedRow(..) 來擷取所選行的索引。
有更好的方法嗎?
提供的範例展示了另一種方法,其中 TableModel 更新 Set
實作細節
CheckModel 類別擴展 AbstractTableModel 並處理 rowList 和檢查設置,根據複選框狀態變化維護它們。 DisplayPanel 類別包含一個 JList,用於偵聽表模型變更並相應地更新其顯示。
結論
雖然順序行遍歷方法可能足以滿足小型資料集,在處理大型資料集時,使用TableModel 監聽器或上面顯示的替代方法可以顯著提高效率。無論表格大小如何,這些技術都可以有效檢索所選行。
以上是如何從具有大型資料集的 JTable 中高效檢索所選行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!