Un bouton de choix joue un peu le même rôle qu'un menu déroulant ou qu'une liste de choix. La classe correspondante est la classe javax.swing.JComboBox.
Vous pouvez voir ci-dessous le code d'une application qui fait sensiblement la même chose que l'applet ci-dessus.
L'utilisation d'un bouton de choix n'est pas compliquée et la plupart des techniques du programme ci-dessous ont déjà été utilisées dans les programmes précédents.
Les boutons de choix que nous utilisons sont "non éditables". On pourrait en faire des boutons "éditables" ; l'item sélectioné serait alors une zone de texte modifiable.
La classe JComboBox possède différents constructeurs ; par exemple, l'un d'entre eux prend en paramètre un "Vector" ; les items du bouton correspondent alors aux différents objects du "Vector" indiqué. Nous utilisons ici un constructeur sans paramètre.
Nous vous encourageons, comme pour toutes les classes que nous vous présentons, à consulter l'API pour en savoir plus.
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JComboBox;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.BorderLayout;
public class BoutonChoix extends JFrame implements ItemListener {
JComboBox choix = new JComboBox();
ArdoiseChoix ardoise = new ArdoiseChoix();
public BoutonChoix() {
JPanel panneau = new JPanel();
choix.addItem("noir");
choix.addItem("rouge");
choix.addItem("vert");
choix.addItem("bleu");
choix.addItem("jaune");
choix.addItemListener(this);
panneau.add(choix);
add(panneau, BorderLayout.NORTH);
add(ardoise, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocation(300, 300);
setVisible(true);
}
public void itemStateChanged(ItemEvent evt) {
ardoise.setForeground(getCouleur(choix.getSelectedItem()));
}
Color getCouleur(Object s) {
if (s.equals("rouge")) return Color.RED;
else if (s.equals("vert")) return Color.GREEN;
else if (s.equals("bleu")) return Color.BLUE;
else if (s.equals("jaune")) return Color.YELLOW;
return Color.BLACK;
}
}
class ArdoiseChoix extends JPanel {
ArdoiseChoix() {
setPreferredSize(new Dimension(100, 100));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillOval(10,10,80,80);
}
}
class EssaiBoutonChoix {
public static void main(String[] arg) {
new BoutonChoix();
}
}
Vous pouvez voir :