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.
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
Cordialement
Partager