Getting Selected Rows in JTable with Selected Row Tracking
Problem:
Efficiently obtaining selected rows from a JTable with a JCheckBox in the first column for row selection. Sequential traversal becomes inefficient with a large number of rows.
Traditional Approach:
Sequentially iterating through all rows to get selected rows. This approach is problematic when dealing with thousands of rows.
Proposed Approach:
Model-Based Tracking:
Code Example:
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); } }
Additional Optimization:
Benefits of the Model-Based Approach:
The above is the detailed content of How to Efficiently Get Selected Rows from a JTable with JCheckBox Row Selection?. For more information, please follow other related articles on the PHP Chinese website!