Jcombobox en cascade

Contenu du snippet

Cette source montre comment créer deux combobox pour lesquelles les données contenues dans la combobox fille dépendent de l'item selectionné dans la Combobox mère.

Source / Exemple :


package fr.julien.cl;

import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;

/**

  • <b>Cette classe montre comment utiliser des combobox en cascade</b>
  • <p>
  • Les données contenues dans la combobox fille dépendent de l'item
  • selectionné dans la Combobox mère.
  • </p>
  • @author Julien
  • @version 1.0
*
  • /
public class Lanceur { public static void main(String[] args) { JFrame f = new JFrame("ComboBox en cascade"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(new Dimension(300, 100)); f.setLocationRelativeTo(null); /* Données de la ComboBox de référence */ ComboBoxModel modelMere = new DefaultComboBoxModel(new Object[]{"France", "Espagne"}); /* Données à afficher si l'item de la comboBox de référence est France */ final ComboBoxModel modelFrance = new DefaultComboBoxModel(new Object[]{"Paris", "Marseille", "Lyon", "Toulouse"}); /* Données à afficher si l'item de la comboBox de référence est Espagne */ final ComboBoxModel modelEspagne = new DefaultComboBoxModel(new Object[]{"Madrid", "Barcelone", "Valence"}); final JComboBox mere = new JComboBox(modelMere); final JComboBox fille = new JComboBox(modelFrance); /* L'ItemListener est appelé chaque fois que la sélection change */ mere.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if(mere.getSelectedItem().equals("France")){ fille.setModel(modelFrance); } else if(mere.getSelectedItem().equals("Espagne")){ fille.setModel(modelEspagne); } } }); f.setLayout(new GridLayout(0, 1)); f.add(mere); f.add(fille); f.setVisible(true); } }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.