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 :Et voici mon code après le clic sur le bouton :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 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)
Le ItemListener n'est pas fini, mais c'est juste pour qu'il s'exécute.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 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'; } } }
Merci d'avance pour votre aide !
Sinon, comme dit plus haut, j'ai essayé de faire ceci :
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 ?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 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'; } } }
Merci pour vos réponses