Utilisation d'une liste de choix

     

Notre application est représentée par l'image ci-contre :

Peut-être vous voyez aussi l'applet ci-dessous. L'applet et l'application ont le même fonctionnement ; lorsqu'on coche un item, la couleur du disque devient la couleur correspondante.

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é)

Ici, on instancie la classe JList avec un constructeur prenant en paramètre un Vector. La classe Vector est très proche de la classe ArrayList et est également générique.

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Vector;

public class FenetreListe extends JFrame implements ListSelectionListener {
Ardoise ardoise = new Ardoise();
JList liste;

public FenetreListe() {
JScrollPane listeAvecAscenseur;
Vector<String> listeItems = new Vector<String>();

listeItems.addElement("vert");
listeItems.addElement("rouge");
listeItems.addElement("bleu");
listeItems.addElement("jaune");
liste = new JList(listeItems);
liste.setSelectedIndex(0);
ardoise.setCouleur(Color.GREEN);
liste.addListSelectionListener(this);

listeAvecAscenseur = new JScrollPane(liste);
listeAvecAscenseur.setPreferredSize(new Dimension(80, 70));

setLayout(new FlowLayout());
add(ardoise);
add(listeAvecAscenseur);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocation(200, 200);
setVisible(true);
}

public void valueChanged(ListSelectionEvent evt) {
Color couleur = Color.BLACK;;

if (liste.getSelectedValue() == "vert") couleur = Color.GREEN;
else if (liste.getSelectedValue() == "rouge") couleur = Color.RED;
else if (liste.getSelectedValue() == "bleu") couleur = Color.BLUE;
else if (liste.getSelectedValue() == "jaune") couleur = Color.YELLOW;
ardoise.setCouleur(couleur);
ardoise.repaint();
}
}

class EssaiFenetreListe {
public static void main(String[] arg) {
new FenetreListe();
}
}

class Ardoise extends JPanel {
private Color couleur;

Ardoise() {
setPreferredSize(new Dimension(100, 100));
}

void setCouleur(Color couleur) {
this.couleur = couleur;
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(couleur);
g.fillOval(10,10,80,80);
}
}

Vous pouvez télécharger