使用选定行跟踪在 JTable 中获取选定行
问题:
从JTable 在第一列中有一个 JCheckBox 用于行选择。对于大量行,顺序遍历变得低效。
传统方法:
顺序迭代所有行以获取选定的行。这种方法在处理数千行时会出现问题。
建议的方法:
基于模型的跟踪:
代码示例:
import javax.swing.table.AbstractTableModel; import java.util.Set; import java.util.TreeSet; public class CheckModel extends AbstractTableModel { // ... private Set<Integer> checked = new TreeSet<>(); // ... @Override public void setValueAt(Object aValue, int row, int col) { boolean b = (Boolean) aValue; rowList.set(row, b); if (b) { checked.add(row); } else { checked.remove(row); } fireTableRowsUpdated(row, row); } }
其他优化:
基于模型的方法的优点:
以上是如何使用 JCheckBox 行选择有效地从 JTable 中获取选定的行?的详细内容。更多信息请关注PHP中文网其他相关文章!