Problem Listener JComboBox
Bonjour
Je veux créer une interface swing qui contient deux combobox combo1 et combo2
Combo 1 : contient un événement even1 qui s’exécute après chaque changement de l’élément sélectionne.
Combo2 : contient un événement even2 qui change l’élément affiche de combo1 sans exécute l’even1.
Donc j’ai pensé d’ajouter :
1- Un MouseListener à combo1 qui contient even1 mais le problème que l’événement ne s’exécute pas qu’après un autre clic sur l’élément choisi (c.-à-d. le faite de choisir un élément avec le sourie n’entraine pas que even1 sera exécuter).
2- Un ActionListener à combo1 qui contient even1 mais le problème que l’événement even1 s’exécute aussi après changement provienne de l’even2 de combo2.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class EssaiChoix extends JPanel implements ItemListener {
JComboBox combo1 = new JComboBox();
JComboBox combo2 = new JComboBox();
Ardoise ardoise = new Ardoise();
EssaiChoix() {
JPanel panneau = new JPanel();
combo1.addItem("noir");
combo1.addItem("rouge");
combo1.addItem("vert");
combo1.addItem("bleu");
combo1.addItem("jaune");
combo1.setToolTipText("combo1");
combo2.addItem("1");
combo2.addItem("2");
combo2.addItem("3");
combo2.addItem("4");
combo2.addItem("5");
combo2.setToolTipText("combo2");
panneau.add(combo1);
panneau.add(combo2);
combo1.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
ardoise.setForeground(getCouleur((String) combo1
.getSelectedItem()));
}
});
combo2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
combo1.setSelectedIndex(combo2.getSelectedIndex());
}
});
setLayout(new BorderLayout(5, 5));
add(panneau, BorderLayout.NORTH);
add(panneau, BorderLayout.EAST);
add(ardoise, BorderLayout.CENTER);
}
public void itemStateChanged(ItemEvent evt) {
ardoise.setForeground(getCouleur((String) combo1.getSelectedItem()));
}
Color getCouleur(String s) {
if (s.equals("noir"))
return Color.black;
else 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;
}
public static void main(String[] argv) {
JFrame monCadre = new JFrame();
monCadre.setContentPane(new EssaiChoix());
monCadre.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
monCadre.pack();
monCadre.setVisible(true);
}
}
class Ardoise extends JPanel {
Ardoise() {
setPreferredSize(new Dimension(100, 100));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(10, 10, 80, 80);
}
} |
Merci d'avance.
Cordialement