Java/Swing- Delphi
Exemple en Java sur 2 listes déroulantes

Objectif : Application simple Java utilisant deux objets de classe JComboBox.



Dans cet exemple, nous utilisons deux JComboBox, le premier est chargé grâce à l'architecture MVC de la bibliothèque swing, le second directement à travers sa méthode addItem .

La fenêtre comporte deux bouton (JButton jButton1 et jButton2), deux listes déroulantes (JComboBox jComboBox1 et jComboBox2 ), et un éditeur de texte multi-ligne (JTextArea jTextArea1 ):


 

Voici le diagramme événementiel de l'actions du click de souris sur le bouton jButton1:  lorsqu'un élément de la liste est sélectionné, lors du click sur le bouton l'application  rajoute cet élément dans la zone de texte.


 

Schémas UML du projet

 

En Java (JBuilder)

Comme en java tous les événements sont interceptés par des objets écouteurs, ci-dessous nous donnons les diagrammes UML des classes utilisées par le programme qui est proposé :

Rappelons que les classes Cadre1$1 et Cadre1$2 sont des classes anonymes créées lors de la déclaration de l'écouteur des boutons jButton1 et jButton2, Java 2 crée donc dynamiquement un objet écouteur interne (dont la référence n'est pas disponible). Ci-dessous les diagrammes jGrasp des classes anonymes cadre1$1 et Cadre1$2 :

Cadre1$1:


 

Cadre1$2:


 

Enfin pour terminer, voici le listing Java/Swing complet de la classe représentant la fenêtre :

package ExempleJList;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Cadre1 extends JFrame {
  DefaultComboBoxModel mdc = new DefaultComboBoxModel();
  JComboBox jComboBox2 = new JComboBox();
  JComboBox jComboBox1 = new JComboBox();
  JTextArea jTextArea1 = new JTextArea();
  JButton jButton1 = new JButton();
  JButton jButton2 = new JButton();

   //Construire le cadre
  public Cadre1() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try  {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  //Initialiser le composant
  private void jbInit() throws Exception  {
    this.getContentPane().setLayout(null);
    this.setSize(new Dimension(343, 253));
    this.setTitle("Listes déroulantes en Java/Swing");
    jTextArea1.setBounds(new Rectangle(180, 15, 127, 101));
    jButton1.setText("jButton1");
    jButton1.setBounds(new Rectangle(24, 142, 272, 28));

      //  Ecouteur de jButton1 en classe anonyme :
    jButton1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        jButton1_actionPerformed(e);
      }
    });

    jComboBox2.setBounds(new Rectangle(21, 92, 130, 25));
    jComboBox1.setBounds(new Rectangle(19, 36, 129, 23));
    jComboBox1.setModel(mdc); // la première liste déroulante est dirigée par son modèle MVC
    jButton2.setText("jButton2");
    jButton2.setBounds(new Rectangle(23, 184, 274, 30));

    //  Ecouteur de jButton2 en classe anonyme :
    jButton2.addActionListener(new java.awt.event.ActionListener() {

      public void actionPerformed(ActionEvent e) {
        jButton2_actionPerformed(e);
      }
    });

    this.getContentPane().add(jComboBox1, null);
    this.getContentPane().add(jComboBox2, null);
    this.getContentPane().add(jTextArea1, null);
    this.getContentPane().add(jButton2, null);
    this.getContentPane().add(jButton1, null);

    //  Le modèle MVC de la première liste déroulante :
    mdc.addElement("un_1");
    mdc.addElement("deux_1");
    mdc.addElement("trois_1");
    mdc.addElement("quatre_1");

     //  La seconde liste déroulante est chargée directement :
    jComboBox2.addItem("un_2");
    jComboBox2.addItem("deux_2");
    jComboBox2.addItem("trois_2");
    jComboBox2.addItem("quatre_2");
  }

  //Remplacé (surchargé) pour pouvoir quitter lors de System Close
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if(e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  void jButton1_actionPerformed(ActionEvent e) {
    jTextArea1.append((String)jComboBox1.getSelectedItem()+"\n");
  }

  void jButton2_actionPerformed(ActionEvent e) {
    jTextArea1.append((String)jComboBox2.getSelectedItem()+"\n");
  }
}
 

Remonter