我有JTable
使用AbstractTableModel
其中我有一個JCheckBox
在第一列中選擇行。現在,我需要從被檢查的表中選擇所選的行。現在,我按順序從第一行遍歷到最後一行,並讓所有被選擇類似下面的行,使用AbstractTableModel獲取選定的行JTable使用AbstractTableModel
List<Integer> selectedRows = new ArrayList<Integer>();
for(int i = 0; i < table.getRowCount(); i++) {
if((Boolean) table.getValuAt(i, 0)) {
selectedRows.add(i);
}
}
這裏的問題是,我需要的時候曾經我需要遍歷所有的行獲取選定的行。現在我有10到20行。但將來我將獲得5000行左右。我的問題是,如果有5000行,並且用戶只選擇了5000nd(最後一條記錄)行,那麼我需要遍歷所有5000行以獲取選定的行。我認爲這不是一個好方法。
一種方法,我想實現的,一個監聽器添加到JCheckBox
列,這樣,當曾經有改變(SELECTED/DESELECTED)
然後我需要更新我的監聽器類所選行的陣列。在此聽衆類中,當用戶選擇JCheckBox
時,我需要撥打table.getSelectedRow(..)
,如果選擇JCheckBox
,則需要存儲。
有沒有更好的方法?
增強模型:它可以保持/同步它的「選擇」含有一個內部數據結構(又名:具有布爾在第一列真)在setValueAt(...) – kleopatra
感謝。然而,要回顧一個布爾值爲true的我需要遍歷右邊? – Amarnath
如果您使用TableModel,您基本上可以使用相同的方法來保存所選行的數組。唯一不同的是,您可以從TableModel的setValueAt()方法更新它。 –