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"

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
 
	}
 
 
 
}
En vous remerciant d'avance.


P.S. : Merci pour m'avoir fait remarquer l'erreur dans le message