我有一个JTable使用AbstractTableModel在那里我有一个JCheckBox在选择行的第一列.现在,我需要从表中选择要检查的选定行.现在,我顺序遍历从第一行到最后一行并获取所有选择的行,如下所示,
List<Integer> selectedRows = new ArrayList<Integer>();
for(int i = 0; i < table.getRowCount(); i++) {
if((Boolean) table.getValuAt(i, 0)) {
selectedRows.add(i);
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,当需要获取所选行时,我需要遍历所有行.现在我有10到20行.但是将来我会得到5000行左右.我的问题是,如果有5000行,如果用户只选择5000nd(最后一条记录)行,那么我需要遍历所有5000行以获得所选行.我认为这不是一个好方法.
我想要实现的一种方法是,向JCheckBox列添加一个监听器,这样当有任何更改时,(SELECTED/DESELECTED)我需要更新监听器类中所选行的数组.在这个监听器类中,当用户选择JCheckBox我需要调用时table.getSelectedRow(..),如果JCheckBox选择了那个我需要存储.
还有更好的方法吗?