JComboBoxes dynamiques : remplissage de ComboBox dépendantes en fonction de la sélection
Introduction
L'objectif est de créez deux JComboBox dynamiques où la liste d'options dans l'une change en fonction de l'élément sélectionné dans l'autre. Ceci est utile lors de la représentation de données hiérarchiques, telles que des cours et des matières.
Solution
Pour implémenter cette fonctionnalité, suivez ces étapes :
Créer un DefaultComboBoxModel pour chaque ensemble :
Créer Séparez les DefaultComboBoxModels pour chaque ensemble d'options, telles que les cours et les matières. Par exemple :
DefaultComboBoxModel coursesModel = new DefaultComboBoxModel(new String[] {"Course 1", "Course 2", "Course 3"}); DefaultComboBoxModel subjectsModel1 = new DefaultComboBoxModel(new String[] {"A1", "A2"}); DefaultComboBoxModel subjectsModel2 = new DefaultComboBoxModel(new String[] {"B1", "B2", "B3", "B4"});
Définissez le modèle initial pour JComboBox2 :
Définissez le ComboBoxModel initial pour JComboBox2 sur le premier ensemble d'options ( dans ce cas, les matières du cours 1).
combo2.setModel(subjectsModel1);
Gérez l'événement de sélection dans JComboBox1 :
Ajoutez un ActionListener à JComboBox1 pour surveiller les modifications de sélection. Lorsque l'utilisateur sélectionne un cours, mettez à jour le ComboBoxModel de JComboBox2 avec les sujets correspondants pour ce cours.
combo1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int i = combo1.getSelectedIndex(); combo2.setModel(subjectsModels[i]); } });
Exemple de mise en œuvre
Le L'extrait de code suivant montre l'implémentation de solution :
import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; public class DynamicCombos extends JPanel { public DynamicCombos() { ComboBoxModel[] models = new ComboBoxModel[3]; models[0] = new DefaultComboBoxModel(new String[] {"Course 1", "Course 2", "Course 3"}); models[1] = new DefaultComboBoxModel(new String[] {"A1", "A2"}); models[2] = new DefaultComboBoxModel(new String[] {"B1", "B2", "B3", "B4"}); JComboBox combo1 = new JComboBox(models[0]); JComboBox combo2 = new JComboBox(models[1]); combo1.addActionListener(e -> combo2.setModel(models[combo1.getSelectedIndex()])); add(combo1); add(combo2); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new DynamicCombos()); frame.pack(); frame.setVisible(true); } }
Conclusion
En tirant parti des DefaultComboBoxModels et de la gestion des événements, cette solution permet un remplissage dynamique des JComboBox en fonction de la sélection dans une autre JComboBox. Cette technique est particulièrement utile dans les situations où les données sont organisées hiérarchiquement et doivent être représentées dans une interface conviviale.
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!