Maison > Java > javaDidacticiel > Comment créer des JComboBox dynamiques avec des sélections dépendantes en Java ?

Comment créer des JComboBox dynamiques avec des sélections dépendantes en Java ?

Linda Hamilton
Libérer: 2024-12-24 06:47:22
original
462 Les gens l'ont consulté

How to Create Dynamic JComboBoxes with Dependent Selections in Java?

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 :

  1. 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"});
    Copier après la connexion
  2. 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);
    Copier après la connexion
  3. 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]);
        }
    });
    Copier après la connexion

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);
    }
}
Copier après la connexion

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!

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