Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
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:
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:
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