"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment obtenir efficacement des lignes sélectionnées à partir d'un JTable avec la sélection de lignes JCheckbox?

Comment obtenir efficacement des lignes sélectionnées à partir d'un JTable avec la sélection de lignes JCheckbox?

Publié le 2025-02-06
Parcourir:455

How to Efficiently Get Selected Rows from a JTable with JCheckBox Row Selection?

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:

  • Updated Un Set contenant les indices de ligne sélectionnés chaque fois que la valeur JCheckBox change.
  • Une classe d'écouteur sur le modèle de table met à jour le Set basé sur la sélection de lignes.

Code Exemple:

import javax.swing.table.AbstractTableModel;
import java.util.Set;
import java.util.TreeSet;

public class CheckModel extends AbstractTableModel {

    // ...

    private Set 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:

  • Utilisez une structure de données légère, comme un arrenet, pour stocker les indices de ligne sélectionnés pour une itération efficace. &&&] Envisagez d'utiliser une structure de données différente pour stocker les lignes sélectionnées si la consommation de mémoire devient un problème.
Avantages de l'approche basée sur le modèle:

] Accès à temps constant aux lignes sélectionnées, quel que soit le nombre total de lignes.
  • Pas besoin de traversée séquentielle, ce qui rend la récupération de sélection hautement efficace.
Dernier tutoriel Plus>

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