[Swing] Evenement onClick : NullPointerException

Evenement onClick : NullPointerException [Swing] - Java - Programmation

Marsh Posté le 12-05-2006 à 18:29:30    

Comment modifier le texte d'un 'textfield' après appui sur un bouton?
 
Voila mon application pour le moment, bien que ça compile ça ne marche pas, pourriez-vous m'aider, SVP:

Citation :


 
import java.awt.*; // Sert pour applications fenetrées
import java.awt.event.*; // idem
import javax.swing.*;
import java.lang.Object;
/** @author Jean-Marie Picot
* classe qui affiche une fenetre avec la grille de cellules ainsi que tous les boutons, menus, etc...
*/
public class essais extends JFrame implements ActionListener, WindowListener
{
/** Bouton pour lancer ou arreter le thread*/
JButton t;
TextField c71;
/** Contient le Contentpane de la fenetre, et cela pour gere le positionnement des composants insérés */
Container conteneur=null;
 
/** Constructeur de la fenetre */
public essais()
{
MenuItem mi;
conteneur=this.getContentPane();
 
conteneur.setLayout(null);
 
setTitle("Pong" );
addWindowListener(this);
 
// Construction d'un menu
MenuBar mb=new MenuBar();
setMenuBar(mb);
// Menu fichier
Menu m1=new Menu("Fichier" );
mb.add(m1);
 
// Item redémarrer
mi=new MenuItem("Redémarrer" );
mi.addActionListener(this);
m1.add(mi);
 
// Item quitter
mi=new MenuItem("Quitter" );
mi.addActionListener(this);
m1.add(mi);
 
// Bouton "lancer/stopper"
t=new JButton("Lancer" );
t.setBounds(65,250,100,20);
conteneur.add(t);
t.addActionListener(this);
 
TextField c71=new TextField("0" );
c71.setBounds(285,280,20,20);
conteneur.add(c71);
}
/** méthode faisant parties de l'interface gerant la fenetre (WindowListener) */
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
/** méthode faisant parties de l'interface gerant la fenetre (WindowListener) */
public void windowClosed(WindowEvent e) {};
/** méthode faisant parties de l'interface gerant la fenetre (WindowListener) */
public void windowDeiconified(WindowEvent e) {};
/** méthode faisant parties de l'interface gerant la fenetre (WindowListener) */
public void windowIconified(WindowEvent e) {};
/** méthode faisant parties de l'interface gerant la fenetre (WindowListener) */
public void windowActivated(WindowEvent e) {};
/** méthode faisant parties de l'interface gerant la fenetre (WindowListener) */
public void windowDeactivated(WindowEvent e) {};
/** méthode faisant parties de l'interface gerant la fenetre (WindowListener) */
public void windowOpened(WindowEvent e) {};
 
/** unique methode faisant partie de l'interface ActionListener qui gere le clic sur les boutons
* ou encore les MenuItem
*/
public void actionPerformed (ActionEvent e)
{
if(e.getActionCommand().equals("Quitter" )) System.exit(0);
else if(e.getActionCommand().equals("Lancer" ) uals("Stopper" ))
{
btn_actionPerformed();
}
}
public void btn_actionPerformed()
{
c71.setText("1" );
}
/**Fonction principale */
public static void main( String arg[])
{
essais es=new essais();
es.setBounds(50,100,400,400);
es.show();
}
}


Je bosse sur eclipse et voila le message d'erreur qu'il me met quand je clique sur le bouton:
 

Citation :


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 
at essais.btn_actionPerformed(essais.java:87)
at essais.actionPerformed(essais.java:81)
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.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)


Reply

Marsh Posté le 12-05-2006 à 18:29:30   

Reply

Marsh Posté le 12-05-2006 à 21:55:19    

Citation :

java.lang.NullPointerException  
 
at essais.btn_actionPerformed(essais.java:87)


on en deduit que tu appelles une methodes sur un objet null, on va voir la fameuse ligne:
 

Code :
  1. public void btn_actionPerformed()
  2. {
  3. c71.setText("1" );
  4. }


 
on en deduit que c71 vaut null, on va voir plus haut comment il est initialise:

Code :
  1. TextField c71=new TextField("0" );
  2. c71.setBounds(285,280,20,20);
  3. conteneur.add(c71);


et la on voit que tu declares une variable locale c71, qui - elle -  est initialisee, mais ton membre c71 lui n'est pas initialise.
 
cqfd
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed