Bonjour,
J'ai besoin de votre aide sur les listeners. Je suis pas expert en Java, et j'embrouille un peu avec tout ça.

Lors d'un clic sur bouton, j'ouvre une nouvelle fenêtre (c'est donc un actionlistener). Dans cette fenêtre, il y a des cases à cocher, sur lesquels je met un ItemListener.
Et là c'est le drame, soit je met le item listener dans une nouvelle classe, mais dans ce cas là, je n'ai pas accès au éléments que j'ai créer dans le fenêtre, soit je met le itemlistener dans la class actionlistener met dans ce cas là, j'ai une erreur.

Voilà l'erreur que j'obtiens :
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
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: param cannot be cast to java.awt.event.ItemListener
	at param.build(param.java:48)
	at param.actionPerformed(param.java:34)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Et voici mon code après le clic sur le bouton :

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
class param implements ActionListener{
 
 
	JPanel pane = new JPanel(new GridLayout(0,1));
	JPanel f1 = new JPanel();
	JPanel f2 = new JPanel();
	JCheckBox mma = new JCheckBox("MMA");
	JTextField mma1 = new JTextField("50");
	JTextField mma2 = new JTextField("20");
	JCheckBox mme = new JCheckBox("MME");
	JTextField mme1 = new JTextField("50");
	JTextField mme2 = new JTextField("20");
 
 
 
		public void actionPerformed(ActionEvent e) {
			JFrame option = new JFrame("Paramètres");
			option.setResizable(false);
			option.setSize(200,400);
 
			build(option);
 
			option.pack();
			option.setVisible(true);
		}
 
		public void build(JFrame option){
			//Init components
			mma1.setColumns(4);
			mma2.setColumns(4);
			mme1.setColumns(4);
			mme2.setColumns(4);
 
			//Ajout des listeners checkbox
			mma.addItemListener((ItemListener) this);
			mme.addItemListener((ItemListener) this);
 
			f1.add(mma);
			f1.add(mma1);
			f1.add(mma2);
 
			f2.add(mme);
			f2.add(mme1);
			f2.add(mme2);
 
			pane.add(f1);
			pane.add(f2);
			option.add(pane);
		}
 
 
 
		public void itemStateChanged(ItemEvent e) {
			int index = 0;
	        char c = '-';
	        Object source = e.getItemSelectable();
 
	        if (source == mma) {
	            index = 0;
	            c = 'c';
	        } else if (source == mme) {
	            index = 1;
	            c = 'g';
	        }
	}
}
Le ItemListener n'est pas fini, mais c'est juste pour qu'il s'exécute.


Merci d'avance pour votre aide !



Sinon, comme dit plus haut, j'ai essayé de faire ceci :

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
 
class param implements ActionListener{
 
 
	JPanel pane = new JPanel(new GridLayout(0,1));
	JPanel f1 = new JPanel();
	JPanel f2 = new JPanel();
	JCheckBox mma = new JCheckBox("MMA");
	JTextField mma1 = new JTextField("50");
	JTextField mma2 = new JTextField("20");
	JCheckBox mme = new JCheckBox("MME");
	JTextField mme1 = new JTextField("50");
	JTextField mme2 = new JTextField("20");
 
 
 
		public void actionPerformed(ActionEvent e) {
			JFrame option = new JFrame("Paramètres");
			option.setResizable(false);
			option.setSize(200,400);
 
			build(option);
 
			option.pack();
			option.setVisible(true);
		}
 
		public void build(JFrame option){
			//Init components
			mma1.setColumns(4);
			mma2.setColumns(4);
			mme1.setColumns(4);
			mme2.setColumns(4);
 
			//Ajout des listeners checkbox
			mma.addItemListener(new CheckboxListener());
			mme.addItemListener(new CheckboxListener());
 
			f1.add(mma);
			f1.add(mma1);
			f1.add(mma2);
 
			f2.add(mme);
			f2.add(mme1);
			f2.add(mme2);
 
			pane.add(f1);
			pane.add(f2);
			option.add(pane);
		}
 
 
	}
 
	 class CheckboxListener implements ItemListener{
		public void itemStateChanged(ItemEvent e) {
			int index = 0;
	        char c = '-';
	        Object source = e.getItemSelectable();
 
	        if (source == mma) {
	            index = 0;
	            c = 'c';
	        } else if (source == mme) {
	            index = 1;
	            c = 'g';
	        }
	}
}
Mais dans ce cas là, java ne reconnait pas mma et mme dans CheckBoxLisenter(), ce qui me parait logique. Il y a t-il une solution à ça ?

Merci pour vos réponses