Un exemple simple d'tilisation d'une liste de choix

     

Une liste de choix est un composant graphique qui offre un choix entre plusieurs possibilités. L'utilisateur sélectionne son choix en cliquant sur l'item retenu.

Notre application prend l'aspects de gauche ci-dessous &agrave: l'ouverture de la fenêtre et celui de droite si on clique sur l'item "Lou".

   

Peut-être pouvez vous aussi voir l'applet ci-dessous :

alt : l'applet n'est pas visible par votre navigateur (dans le menu Outils, Modules complémentaires, activer le plugin Java(TM) Platform SE 6 U32 6.0.320.5 s'il est désactivé)

Si on veut que le choix d'un item provoque un changement à l'exéion, on utilise le listener tt>ListSelectionListener comme on peut le voir dans notre programme.
Il est quelquefois inutile d'implémenter ce listener quand il suffit d'aller voir l'item choisi quand on a besoin de connaître cet item au cours de l'exécution.

Une liste de choix est modélisée par la classe javax.swing.JList.

La liste des items est ici fournie sous forme d'un tableau de chaînes de caractères (un tableau d'instances de la classe String), le tableau nomméchoix. On instancie ici la classe JList avec un constructeur prenant en paramètre un tableau d'Object(s), et on choisit comme paramètre le tableau choix. Les items de la liste sont donc ici des instances de la classe String . Les items sont écrit dans la liste en utilisant la méthode toString des items, ici donc la méthode toString de la classe String.

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JLabel;
import java.awt.BorderLayout;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class FenetreListeNoms extends JFrame implements ListSelectionListener {
JList liste = new JList();
JLabel etiquette = new JLabel(" ");

public FenetreListeNoms() {
String choix[] = {" Pierre", " Paul", " Jacques", " Lou", " Marie"};

liste = new JList(choix);
liste.addListSelectionListener(this);
add(etiquette, BorderLayout.WEST);
add(liste, BorderLayout.EAST);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}

public void valueChanged(ListSelectionEvent evt) {
etiquette.setText((String)liste.getSelectedValue());
}
class EssaiFenetreNoms {
public static void main(String[] arg) {
new FenetreListeNoms();
}
}

Vous pouvez télécharger FenetreListeNoms.java.
Et si vous voulez voir le code de l'applet....


ListSelectionListener : l'interface javax.swing.event.ListSelectionListener contient la définition de la méthode valueChanged(ListSelectionEvent e) qui peut être utilisée quand la sélection d'une liste est modifiée.
JList liste = new JList(); : la classe javax.swing.JList sert à définir un composant graphique contenant un ensemble d'items.
liste.addListSelectionListener(this); : on indique ainsi que, lorsqu'un changement de sélection sur la liste sera effectuée, "this" en sera "listener" : sa méthode valueChanged sera exécutée.
etiquette.setText((String)liste.getSelectedValue()); : la méthode getSelectedValue de la classe JList retourne l'"Object" sélectionné.

© Irène Charon, Télécom ParisTech 2011