Obtenir des lignes sélectionnées en jTable avec le suivi de ligne sélectionné
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 des lignes. La traversée séquentielle devient inefficace avec un grand nombre de lignes.
Approche traditionnelle:
itérant séquentiellement à travers toutes les lignes pour obtenir des lignes sélectionnées. Cette approche est problématique lorsque vous traitez des milliers de lignes.
Approche proposée:
Tracking basé sur le modèle:
Code Exemple:
import javax.swing.table.AbstractTableModel; import java.util.Set; import java.util.TreeSet; public class CheckModel extends AbstractTableModel { // ... private Setchecked = 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:
] Accès à temps constant aux lignes sélectionnées, quel que soit le nombre total de lignes.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3