IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[Swing] Evenement onClick : NullPointerException


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 86
    Par défaut [Swing] Evenement onClick : NullPointerException
    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:

    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"))
    {
    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:


    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)


  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    C'est logique, car tu demande de récupérer l'actionCommand, mais tu n'en as jamais donné, donc ca va te donner un null et ensuite tu essaies de faire quelque chose sur ce null. C'est normal que ca te renvoie cette exception.

    Il te faut ajouter quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Item quitter
    mi=new MenuItem("Quitter");
    mi.addActionListener(this);
    mi.setActionCommand("Quitter");
    m1.add(mi);

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 86
    Par défaut
    Je ne comprend pas ce que tu me dis, j'ai dejà un truc de ce genre:
    t=new JButton("Lancer");
    t.setBounds(65,250,100,20);
    conteneur.add(t);
    t.addActionListener(this);
    Quand je clik sur ce bouton, ça doit utiliser la fonction "public void btn_actionPerformed()" ce qui se passe parfaitement quand dans cette fonction je ne demande que d'afficher qqchose sur la console, mais quand je met
    c71.setText("1");
    ça ne marche pas. Pkoi?

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 86
    Par défaut
    Problème réolu par moi même car en fait j'avais mi ça en trop:
    TextField c71=new TextField("0");
    c71.setBounds(285,280,20,20);
    conteneur.add(c71);

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    En fait j'ai répondu à coté, j'ai mal lu Desolé...

    J'ai compris ou était ton vrai problème (du moins j'éspère...), en fait tu essaies d'accéder à une variable (c71) qui est nulle.

    En faite tu déclares cette variable 2 fois, une fois dans les variables d'instances au début de ta classe et tu la redéclares une deuxième fois en variable locale dans le constructeur au lieu de l'initialiser.

    Pour corriger cette erreur, dans le constructeur, au lieu de mettre TextField c71=new TextField("0"); il faut mettre c71=new TextField("0"); Comme ca tu vas pas recréer une variable locale mais initialiser celle d'instance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bouton alternant 2 fonctions sur le meme evenement onClick
    Par Rocca dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/01/2006, 09h16
  2. Evenement OnClick qui ne fonctionne pas sous firefox
    Par frechy dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/12/2005, 16h06
  3. Réponses: 6
    Dernier message: 23/12/2005, 13h51
  4. [Swing]Evenement JTree
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 17/05/2005, 12h09
  5. [SWING]Evenement global à une fenetre
    Par nicoo dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 03/05/2005, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo