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 : 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);
	}
}
Merci d'avance.
Cordialement