Maison > Java > javaDidacticiel > Comment puis-je récupérer efficacement les lignes sélectionnées d'une JTable avec de grands ensembles de données ?

Comment puis-je récupérer efficacement les lignes sélectionnées d'une JTable avec de grands ensembles de données ?

Barbara Streisand
Libérer: 2024-11-26 02:28:09
original
888 Les gens l'ont consulté

How Can I Efficiently Retrieve Selected Rows from a JTable with Large Datasets?

Obtention efficace des lignes sélectionnées à partir d'une JTable à l'aide de AbstractTableModel

Le processus de récupération des lignes sélectionnées à partir d'une JTable peut devenir inefficace lorsqu'il s'agit de grands ensembles de données , car cela implique de parcourir séquentiellement toutes les lignes. Cet article présente une approche plus efficace utilisant un mécanisme d'écoute basé sur AbstractTableModel.

Énoncé du problème

Dans une JTable avec un JCheckBox dans la première colonne pour la sélection de lignes, récupération Les lignes sélectionnées nécessitent de parcourir toutes les lignes pour rassembler celles qui sont cochées. À mesure que l'ensemble de données grandit, cela devient une approche indésirable.

Solution suggérée : implémenter un écouteur TableModel

La solution consiste à ajouter un TableModelListener à la colonne JCheckBox. Chaque fois que l'état d'un JCheckBox change (SELECTED/DESELECTED) dans la classe d'écoute, le tableau selectedRows est mis à jour. De plus, table.getSelectedRow(..) peut être invoqué dans la classe d'écoute pour capturer l'index de la ligne sélectionnée.

Existe-t-il une meilleure façon ?

L'exemple fourni présente une approche alternative, dans laquelle le TableModel met à jour un Set nommé vérifié lors des modifications apportées à sa méthode setValueAt(). Une JList adjacente est liée à ce TableModel et affiche dynamiquement les numéros de ligne sélectionnés. Cette méthode s'avère efficace lorsque le nombre de lignes sélectionnées est petit par rapport au nombre total de lignes.

Détails d'implémentation

La classe CheckModel étend AbstractTableModel et gère la rowList et les vérifications définis, en les conservant en fonction des changements d’état des cases à cocher. La classe DisplayPanel contient une JList qui écoute les modifications du modèle de table et met à jour son affichage en conséquence.

Conclusion

Bien que l'approche de parcours séquentiel de lignes puisse suffire pour les petits ensembles de données, l'utilisation d'un écouteur TableModel ou de la méthode alternative présentée ci-dessus permet des gains d'efficacité significatifs lors du traitement de grands ensembles de données. Ces techniques permettent une récupération efficace des lignes sélectionnées, quelle que soit la taille de la table.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal