Obtention des lignes sélectionnées dans JTable avec le suivi des lignes sélectionnées
Problème :
Obtention efficace des lignes sélectionnées à partir d'un JTable avec un JCheckBox dans la première colonne pour la sélection de lignes. Le parcours séquentiel devient inefficace avec un grand nombre de lignes.
Approche traditionnelle :
Itération séquentielle sur toutes les lignes pour obtenir les lignes sélectionnées. Cette approche est problématique lorsqu'il s'agit de milliers de lignes.
Approche proposée :
Suivi basé sur un modèle :
Exemple de code :
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); } }
Optimisation supplémentaire :
Avantages de l'approche basée sur un modèle :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!