Comment lier deux JCombobox entre eux – Swing Java

JComboBox fait partie du package Java Swing. JComboBox hérite de la classe JComponent. JComboBox affiche un menu contextuel sous forme d’une liste, qui permet à l’utilisateur de sélectionner une option dans cette liste spécifiée.

JComboBox peut générer une interface ActionListener. Lors de la sélection d’une option, la méthode actionPerformed() est appelée.

Dans ce tutoriel nous allons découvrir comment changer les données d’un JCombobox par rapport à un autre, ou autrement dit, comment lier deux JCombobox entre eux?
 
 

Exemple:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class LinkTwoComboBox extends JFrame implements ActionListener
{
  private JComboBox cb1;
  private JComboBox cb2;
  private Hashtable hash = new Hashtable();
 
  public LinkTwoComboBox()
  {
    String[] items = {"Sélectionnez un élément", "Langage", "Coleur", "Forme"};
    cb1 = new JComboBox(items);
    cb1.addActionListener(this);
 
    /* empêcher les événements d'être déclenchés lorsque les touches 
    fléchées haut et bas sont utilisées */
    cb1.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
    getContentPane().add(cb1, BorderLayout.WEST);
 
    // créer une sous-liste
    cb2 = new JComboBox();
    cb2.setPrototypeDisplayValue("XXXXXXXXXXXXXXXXX");
    getContentPane().add(cb2, BorderLayout.EAST);
 
    String[] hash1 = {"Choisissez un langage", "Java", "PHP", "Python"};
    hash.put(items[1], hash1);
 
    String[] hash2 = {"Choisissez une couleur", "Rouge", "Vert", "Bleu"};
    hash.put(items[2], hash2);
 
    String[] hash3 = {"Choisissez une forme", "Triangle", "Cercle", "Carré"};
    hash.put(items[3], hash3);
    //sélectionner le premier élémént par défaut
    cb1.setSelectedIndex(1);
  }

  public void actionPerformed(ActionEvent e)
  {
    String str = (String)cb1.getSelectedItem();
    Object o = hash.get(str);
 
    if (o == null){
        cb2.setModel(new DefaultComboBoxModel());
    }
    else{
        cb2.setModel(new DefaultComboBoxModel((String[])o));
    }
  }
 
  public static void main(String[] args)
  {
     JFrame f = new LinkTwoComboBox();
     f.setDefaultCloseOperation(EXIT_ON_CLOSE);
     f.pack();
     f.setLocationRelativeTo(null);
     f.setVisible(true);
   }
}

Sortie:


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *