Je suis en train de réaliser un simulateur de régulateur de vitesse et lorsque j'essai de de faire apparaitre une boite de dialogue pour cocher des options à partir d'un menu ca ne fonctionne pas et j'obtiens ces belles petites erreures
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at IHM.FenetrePrincipale.SetVisibleFenetrePanne(FenetrePrincipale.java:111)
at IHM.FenetrePrincipale.actionPerformed(FenetrePrincipale.java:97)
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.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.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.pumpOneEventForHierarchy(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)
Je pense que cela doit être une erreure plutôt de débutant mais je ne comprend vraiment pas pourquoi.
Voici la classe a laquelle j'essai de faire appel :
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 package IHM; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class FenetrePannes extends JFrame implements ActionListener { //JPanels private JPanel _Fenetre; private JPanel _Buttons; //JLabels private JLabel _LabelFenetre; //JButtons private JButton _InjectButton; private JButton _CancelButton; //JCheckBox private JCheckBox _Tachymetre1; private JCheckBox _Tachymetre2; private JCheckBox _BDV; private JCheckBox _Regulateur; private JCheckBox _Roue; public FenetrePannes() { //this.setVisible(true); //Instanciation instanciation(); //Construction Construction(); //Listener Listener(); this.add(this._Fenetre); this.setDefaultCloseOperation(HIDE_ON_CLOSE); this.pack(); } private void instanciation() { this.setTitle("Panneau des Pannes"); ImageIcon _Pannes = new ImageIcon("Pannes.jpg"); this._Fenetre = new JPanel(); this._Buttons = new JPanel(); this._LabelFenetre = new JLabel("Panneau Injection de Pannes", _Pannes, SwingConstants.CENTER); this._Tachymetre1 = new JCheckBox("Tachymètre 1"); this._Tachymetre2 = new JCheckBox("Tachymètre 2"); this._BDV = new JCheckBox("Boite de Vitesse"); this._Regulateur = new JCheckBox("Regulateur"); this._InjectButton = new JButton("Injection des pannes"); this._CancelButton = new JButton("Annuler"); this._Roue = new JCheckBox("Crevaison"); } private void Construction() { this._Buttons.setLayout(new FlowLayout(SwingConstants.CENTER)); this._Buttons.add(this._InjectButton); this._Buttons.add(this._CancelButton); this._Fenetre.setLayout(new GridLayout(7,1)); this._Fenetre.add(this._LabelFenetre); this._Fenetre.add(this._Tachymetre1); this._Fenetre.add(this._Tachymetre2); this._Fenetre.add(this._BDV); this._Fenetre.add(this._Regulateur); this._Fenetre.add(this._Roue); this._Fenetre.add(this._Buttons); //Container c= this.getContentPane(); //c.setLayout(new GridLayout(2,1)); //c.add(_Fenetre); //c.add(_Buttons); } private void Listener() { this._InjectButton.addActionListener(this); this._CancelButton.addActionListener(this); } private void ButtonPerformed(ActionEvent e) { if(e.getSource() == this._InjectButton) { this.setVisible(false); } if(e.getSource() == this._CancelButton) { this.setVisible(false); } } public boolean getEtatTachy1() { if(this._Tachymetre1.getAction() == null) return false; else return true; } public boolean getEtatTachy2() { if(this._Tachymetre2.getAction() == null) return false; else return true; } public boolean getEtatRoue() { if(this._Roue.getAction() == null) return false; else return true; } public boolean getEtatBDV() { if(this._BDV.getAction() == null) return false; else return true; } public boolean getEtatRegulateur() { if(this._Regulateur.getAction() == null) return false; else return true; } public void actionPerformed(ActionEvent e) { ButtonPerformed(e); } public static void main(String[] args) { FenetrePannes Fenetre=new FenetrePannes(); Fenetre.setVisible(true); } }
Et voici la classe qui est la "principale" qui doit appeler la precedente lorsque l'on clique sur "Menu => Menu d'injection de Panne => Montrer"
En vous remerciant 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
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 package IHM; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class FenetrePrincipale extends JFrame implements ActionListener, MouseListener{ //private JTextField _nameTextField; //private JButton _okButton; //private JButton _cancelButton; private Scrollbar _BarreAccelerateur; private Scrollbar _BarredeFrein; //JProgressBar private JProgressBar _Vitesse; private JProgressBar _Regime; //private JMenuItem _Creer3; private JMenuBar _MenuBar; private JMenu _Menu; private JMenu _MenuDesPannes; private JMenuItem _MenuPannesMontrer; private JMenuItem _MenuPannesCacher; private JMenuItem _MenuExit; //Classes Graphiques private FenetrePannes _FenetrePanne; public FenetrePrincipale() { super(); this.setVisible(true); this.setTitle("Simulateur"); this.CreationFenetre(); //Efficace? this.CreationMenu(); this.listenerMenu(); this.pack(); this.setExtendedState(JFrame.MAXIMIZED_BOTH); } private void CreationMenu() { //JMenus this._MenuBar = new JMenuBar(); this._Menu = new JMenu("Menu"); this._MenuDesPannes = new JMenu("Menu d'injection de pannes"); this._MenuPannesMontrer = new JMenuItem("Montrer"); this._MenuPannesCacher = new JMenuItem("Cacher"); this._MenuExit = new JMenuItem("Fermer"); //Mise en place Des menus this._MenuBar.add(_Menu); this._Menu.add(_MenuDesPannes); this._Menu.add(_MenuExit); this._MenuDesPannes.add(_MenuPannesMontrer); this._MenuDesPannes.add(_MenuPannesCacher); this.setJMenuBar(_MenuBar); } private void listenerMenu() { this._Menu.addActionListener(this); this._MenuPannesMontrer.addActionListener(this); this._MenuPannesCacher.addActionListener(this); this._MenuExit.addActionListener(this); } private void CreationFenetre() { FenetrePannes _FenetrePanne=new FenetrePannes(); _FenetrePanne.setVisible(false); } public void SetVisibleFenetrePanne(boolean b) { this._FenetrePanne.setVisible(b); } public void actionPerformed(ActionEvent e) { //Bar De Menu if(e.getSource() == this._MenuPannesMontrer) { //this._FenetrePanne.setVisible(true); SetVisibleFenetrePanne(true); } if(e.getSource() == this._MenuPannesCacher) { SetVisibleFenetrePanne(false); } if(e.getSource() == this._MenuExit) { System.exit(0); } } public static void main(String[] args) { FenetrePrincipale Fenetre=new FenetrePrincipale(); } public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } }
P.S. : Merci pour m'avoir fait remarquer l'erreur dans le message
Partager