Sélection de plusieurs lignes avec décoche de case dans JTable
Dans une JTable avec une colonne de texte non modifiable et une colonne de case à cocher affichant des valeurs booléennes, vous pouvez rencontrer un scénario où vous souhaitez décocher toutes les cases sous sélection lorsqu'une case est décochée. Voici comment y parvenir :
L'exemple fourni montre une interface utilisateur graphique qui utilise des boutons pour plus de simplicité. Cependant, une SelectionAction peut être efficacement implémentée pour les menus ou les fenêtres contextuelles.
Considérez les étapes suivantes :
Structure des données
- Définissez un DataModel personnalisé qui étend DefaultTableModel.
- Remplacez la méthode getColumnClass pour spécifier que la colonne de case à cocher est booléenne class.
- Remplacez la méthode isCellEditable pour rendre la colonne de case à cocher modifiable.
Gestion des sélections
- Utilisez DefaultListSelectionModel pour gérer les sélections de lignes.
Action pour la case à cocher Manipulation
- Définissez une classe SelectionAction qui étend AbstractAction pour gérer les événements de bouton.
- Passez une valeur booléenne au constructeur pour indiquer l'état de la case à cocher souhaité.
- Lorsque le l'action est déclenchée, parcourez les lignes sélectionnées, en définissant la valeur de la case à cocher sur le booléen spécifié pour chaque ligne sélectionnée. rangée.
Intégration
- Ajoutez le panneau de contrôle avec des boutons au JPanel principal.
- Écoutez les clics sur les boutons et exécutez la SelectionAction pour gérer les mises à jour des cases à cocher. .
Exemple de code
//...
private class ControlPanel extends JPanel {
public ControlPanel() {
this.add(new JLabel("Selection:"));
this.add(new JButton(new SelectionAction("Clear", false)));
this.add(new JButton(new SelectionAction("Check", true)));
}
}
//...
Copier après la connexion
Cette approche fournit une solution complète pour gérer la sélection de plusieurs lignes et décocher les cases dans une JTable.
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!