-
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.
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;
/**
* Cette classe montre comment utiliser des combobox en cascade
*
* Les données contenues dans la combobox fille dépendent de l'item
* selectionné dans la Combobox mère.
*
*
* @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);
}
} |