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
Linda Hamiltonoriginal
2024-12-24 06:47:22466parcourir

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"});
  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);
  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]);
        }
    });

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!

Déclaration:
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