Bonjour à tous.
Je débute actuellement avec les interfaces graphiques en java et j'ai quelques soucis avec l'utilisation d'un actionListener.
Tout d'abord, voilà le code, je vous expliquerais ce que je veux faire ensuite.
La Classe Traitement implémentée d'actionListener qui redéfinit la méthode actionPerformed
J'ai ensuite la classe Boutons qui me sert à initialiser des boutons
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 package p_fenetre; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JLabel; public class Traitement implements ActionListener { private int i = 1; JLabel label; @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub System.out.println("Test No" +i); i++; } }
Dans ma classe SideBar héritée de JPanel, j'instancie tous les boutons dont j'aurais besoin
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 package p_fenetre; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Boutons extends JButton implements MouseListener { /** * */ private static final long serialVersionUID = 1008958587886690045L; /*Constructeur de la classe Boutons * Le bouton s'ecoute lui meme avec l'attribut "this" dans addMouseListener */ public Boutons(String str){ super(str); this.addMouseListener(this); } @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub this.setBackground(Color.CYAN); } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub this.setBackground(new JButton().getBackground()); } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } }
Ma classe Conteneur (qui porte mal son nom en fait) qui est aussi héritée de JPanel
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 package p_fenetre; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class SideBar extends JPanel implements ActionListener{ /** * */ private static final long serialVersionUID = -7717883325397196472L; //Initialisation des 6 boutons � partir de la classe Boutons private Boutons b1 = new Boutons("Ligne Verticale"); private Boutons b2 = new Boutons("Ligne Horizontale"); private Boutons b3 = new Boutons("Ligne Oblique"); private Boutons b4 = new Boutons("Intersection Y"); private Boutons b5 = new Boutons("Intersection T"); private Boutons b6 = new Boutons("Intersection X"); //D�termination de la taille de la SideBar Dimension tailleEcran = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); //private int hauteur = (int)(tailleEcran.getHeight()-22); private int largeur = (int)(tailleEcran.getWidth()/4); public SideBar(){ // Background en Gris juste pour distinguer les 2 conteneurs pdt l'elaboration de l'interface this.setBackground(Color.LIGHT_GRAY); //Positionnement des boutons this.setLayout(null); this.b1.setBounds(0,0,(this.largeur),50); this.b2.setBounds(0,60,(this.largeur),50); this.b3.setBounds(0,120,(this.largeur),50); this.b4.setBounds(0,180,(this.largeur),50); this.b5.setBounds(0,240,(this.largeur),50); this.b6.setBounds(0,300,(this.largeur),50); this.b1.addActionListener(new Traitement()); //Ajout dans le conteneur this.add(b1); this.add(b2); this.add(b3); this.add(b4); this.add(b5); this.add(b6); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } }
Et ma classe Fenetre qui crée une fenêtre et s'occupe de créer un conteneur qui contiendra Conteneur et SideBar
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 package p_fenetre; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Conteneur extends JPanel implements ActionListener{ /** * */ private static final long serialVersionUID = 6620292449857381975L; Dimension tailleEcran = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); private int hauteur = (int)(tailleEcran.getHeight()-22); private int largeur = (int)(tailleEcran.getWidth()/4); JLabel label = new JLabel("Test"); public Conteneur(){ this.setBackground(Color.WHITE); this.setLayout(null); this.label.setBounds(0,0,this.largeur*3/4,this.hauteur); this.add(label); } @Override public void actionPerformed(ActionEvent e) { } }
Alors voilà mon problème....
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215 package p_fenetre; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Fenetre extends JFrame{ /** * */ private static final long serialVersionUID = -929792336357849312L; /** * @param args */ //Appel des differentes Classes private Conteneur pan = new Conteneur(); private JPanel container = new JPanel(); private SideBar side = new SideBar(); //Initialisation des variables g�rant la taille de la fenetre Dimension tailleEcran = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); private int hauteur = (int)tailleEcran.getHeight()-22; private int largeur = (int)tailleEcran.getWidth(); //Initialisation de la barre MENU private JMenuBar menuBar = new JMenuBar(); private JMenu test1 = new JMenu("Fichier"); private JMenu test1_2 = new JMenu("Sous ficher"); private JMenu test2 = new JMenu("Edition"); private JMenuItem item1 = new JMenuItem("Ouvrir"); private JMenuItem item2 = new JMenuItem("Fermer"); private JMenuItem item3 = new JMenuItem("Lancer"); private JMenuItem item4 = new JMenuItem("Arr�ter"); private JCheckBoxMenuItem jcmi1 = new JCheckBoxMenuItem("Choix 1"); private JCheckBoxMenuItem jcmi2 = new JCheckBoxMenuItem("Choix 2"); private JRadioButtonMenuItem jrmi1 = new JRadioButtonMenuItem("Radio 1"); private JRadioButtonMenuItem jrmi2 = new JRadioButtonMenuItem("Radio 2"); public Fenetre(){ //Initialisation de la fenetre this.setTitle("WYP"); this.pack(); Fenetre.setDefaultLookAndFeelDecorated(true); this.setExtendedState(Fenetre.MAXIMIZED_BOTH); this.setMinimumSize(new Dimension(this.largeur,this.hauteur)); this.setLocationRelativeTo(null); this.setResizable(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /*REPRISE DU CODE DU SDZ POUR LES MENUS (JUSTE POUR AVOIR UNE IDEE DE CE QUE CA PEUT DONNER)*/ this.test1.add(item1); //On ajoute les �l�ments dans notre sous-menu this.test1_2.add(jcmi1); this.test1_2.add(jcmi2); //Ajout d'un s�parateur this.test1_2.addSeparator(); //On met nos radios dans un ButtonGroup ButtonGroup bg = new ButtonGroup(); bg.add(jrmi1); bg.add(jrmi1); //On pr�s�lectionne la premi�re radio jrmi1.setSelected(true); this.test1_2.add(jrmi1); this.test1_2.add(jrmi2); //Ajout du sous-menu dans notre menu this.test1.add(this.test1_2); //Ajout d'un s�parateur this.test1.addSeparator(); item2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { System.exit(0); } }); this.test1.add(item2); this.test2.add(item3); this.test2.add(item4); //L'ordre d'ajout va d�terminer l'ordre d'apparition dans le menu de gauche � droite //Le premier ajout� sera tout � gauche de la barre de menu et inversement pour le dernier this.menuBar.add(test1); this.menuBar.add(test2); //------------------------- this.setJMenuBar(menuBar); //Ajout des conteneurs this.container.setBackground(Color.WHITE); this.container.setLayout(null); this.pan.setBounds(0,0,(this.largeur*3/4),this.hauteur); this.side.setBounds((this.largeur*3/4),0,(this.largeur/4),(this.hauteur)); this.container.add(pan); this.container.add(side); this.setContentPane(this.container); this.setVisible(true); } }
J'aimerais que l'un de mes boutons que j'ai instancié dans ma classe SideBar puisse (quand je clique dessus) changer le texte d'un JLabel qui serait présent dans ma classe Conteneur....
Seulement, je dois m'emmêler les pinceaux et je n'arrive pas à réaliser cela.
Un petit coup de main serait le bienvenu et apprécié :-)
Dans l'attente de vos réponses éclairées, j'en suis sûr.
Partager