NullPointerException à l'aide
Salut à tous, j'ai un probleme tout bete.:oops:
Je souhaite tout simplement voir afficher une demande de confirmation de fermeture lorsque l'utilisateur souhaite quitter mon application. (voulez vous quittez ? oui / non ) ...
Voici comment je m'y suis pris :
ma classe AppliFrame contenant la frame :
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
| package IHM;
import METIER.ListenerQuitter;
import java.awt.*;
import javax.swing.*;
public class AppliFrame extends JFrame
{
private MenuBar menubar;
private PanelRequete requete;
private JScrollPane pResult;
public AppliFrame()
{
super("Requeteur");
init();
}
public void init()
{
setBounds(400,300,600,400);
menubar = new MenuBar(this);
setJMenuBar(menubar);
Container cont = getContentPane();
cont.setLayout(new BorderLayout());
requete = new PanelRequete(this);
pResult = new JScrollPane() ;
cont.add(requete , BorderLayout.NORTH);
cont.add(pResult , BorderLayout.CENTER);
setVisible(true);
}
//CONFIRMATION FERMETURE
public void sortiePrudente()
{
if (JOptionPane.showConfirmDialog(this, "Voulez-vous vraiment quitter ?", "Question", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
System.exit(0);
}
} |
ma classe MenuBar pour la barre de menu :
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
| package IHM;
import METIER.*;
import javax.swing.*;
import java.awt.event.InputEvent;
public class MenuBar extends JMenuBar
{
private JMenu fichier;
private JMenuItem connexion;
private JMenuItem configure;
private JMenuItem about;
private JMenuItem quit;
private JSeparator separator;
public MenuBar (AppliFrame appliframe)
{
super();
//MENU FICHIER
fichier = new JMenu("Fichier");
connexion = new JMenuItem("Connexion");
fichier.add(connexion);
configure = new JMenuItem("Configurer");
fichier.add(configure);
separator = new JSeparator();
about = new JMenuItem("About...");
fichier.add(about);
separator = new JSeparator();
quit = new JMenuItem("Quitter");
fichier.add(quit);
quit.addActionListener(new ListenerQuitter());
//AJOUT DU MENU
add(fichier);
}
} |
et enfin la classe ListenerQuitter :
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
| package METIER;
import IHM.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ListenerQuitter implements ActionListener
{
private AppliFrame appliframe;
public ListenerQuitter()
{
super();
this.appliframe=appliframe;
}
public void actionPerformed(ActionEvent e)
{
appliframe.sortiePrudente();
}
} |
et voici mon erreur lorsque je clique sur "quitter" dans mon menu déroulant :
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
| Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at METIER.ListenerQuitter.actionPerformed(ListenerQuitter.java:22)
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.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) |
Merci de votre aide