Partage
  • Partager sur Facebook
  • Partager sur Twitter

le code du livre qui ne marche pas!!

Sujet résolu
    17 novembre 2010 à 19:01:20

    bonjour tous le monde je travaille sur le livre programmer en java j'ai voulu tester un bout de code et a chaque fois il m'indique des erreurs voici le code les deux classe que j'ai utilisé

    le programme utilise un bouton et un jlabel dans lequel on affiche le nombre de clics
    merci d'avance
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Fenetre extends JFrame implements ActionListener  {
    	public Fenetre() {
    		setTitle("ma fenetre");
    		setSize(300,120);
        JButton bouton = new JButton("bouton");
        getContentPane().setLayout(new GridLayout(3,3));
        getContentPane().add(bouton);
    	bouton.addActionListener(this);
    	nbr=0;
    		JLabel compte=new JLabel("oui");
    		getContentPane().add(compte);
    	}
    	
    public void actionPerformed(ActionEvent e)
    { 
    	nbr++;
    	System.out.println("oui"+nbr);
    	compte.setText("les nombre de clic est de:"+nbr);
    	
    	
    }
    private JButton bouton;
    private int nbr;
    private JLabel compte;
    
    }
    

    public class test {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     Fenetre fen=new Fenetre();
     fen.setVisible(true);
    	}
    
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      17 novembre 2010 à 19:07:35

      salut,

      Premièrement, pour la mise en forme, change les balises code en java ^^

      Sinon, indique nous les erreurs que ton IDE affiche. Ce sera plus simple à diagnostiquer :-)
      • Partager sur Facebook
      • Partager sur Twitter
        17 novembre 2010 à 19:18:14

        dsl pour les balises code
        mais pour les erreurs qu'il m'affiche

        Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at Fenetre.actionPerformed(Fenetre.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.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.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)
        • Partager sur Facebook
        • Partager sur Twitter
          17 novembre 2010 à 19:24:47

          J'ignore si c'est une erreur dans le livre, mais cette ligne dans le contructeur :
          JButton bouton = new JButton("bouton");
          doit être remplacée par :
          bouton = new JButton("bouton");
          • Partager sur Facebook
          • Partager sur Twitter
          J'ai tous les badges d'OpenClassrooms.
            17 novembre 2010 à 19:26:28

            J'ajouterai que la ligne :

            JLabel compte=new JLabel("oui");
            


            doit être remplacé par la ligne :

            compte=new JLabel("oui");
            


            Citation : willard


            J'ignore si c'est une erreur dans le livre, mais cette ligne dans le contructeur :
            JButton bouton = new JButton("bouton");
            doit être remplacée par :
            bouton = new JButton("bouton");



            Certe, le code serait plus logique, mais ce n'est pas là la source de l'erreur.

            • Partager sur Facebook
            • Partager sur Twitter
              17 novembre 2010 à 19:30:15

              En effet, remplace les deux lignes citées au dessus et ça marchera :-)

              Edit :

              Si tu analyse ton erreur, tu remarqueras que la ligne qui plante est la suivante :

              compte.setText("les nombre de clic est de:"+nbr);
              


              Tu te ramasse un NullPointerException parce que tu tente d'accéder à la variable d'instance "compte" qui n'existe pas, du faite qu'elle n'a pas été instanciée à l'endroit où ça devait l'être.
              Ce serait donc bien une erreur du livre...
              • Partager sur Facebook
              • Partager sur Twitter
                17 novembre 2010 à 19:33:37

                @tvere: c'est bien la source de l'erreur, ça ne fait aucun doute.

                En lisant l'exception on voit bien que l'erreur trouvée est sur le bouton qui apparait comme nul.
                Après cette correction tu as raison il faut faire de même pour le label.

                Et ça marchera.
                • Partager sur Facebook
                • Partager sur Twitter
                J'ai tous les badges d'OpenClassrooms.
                  17 novembre 2010 à 19:39:14

                  Citation : willard

                  @tvere: c'est bien la source de l'erreur, ça ne fait aucun doute.

                  En lisant l'exception on voit bien que l'erreur trouvée est sur le bouton qui apparait comme nul.



                  Si on lit l'exception, il y a bien écrit :
                  Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
                  at Fenetre.actionPerformed(Fenetre.java:22)


                  Si le bouton était bien source de l'erreur ( à savoir : manipuler un objet qui n'a pas été initialisé ), on aurait :
                  Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
                  at Fenetre.init(Fenetre.java:11)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 novembre 2010 à 19:43:54

                    Citation : tvere

                    Citation : willard

                    @tvere: c'est bien la source de l'erreur, ça ne fait aucun doute.

                    En lisant l'exception on voit bien que l'erreur trouvée est sur le bouton qui apparait comme nul.



                    Si on lit l'exception, il y a bien écrit :
                    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
                    at Fenetre.actionPerformed(Fenetre.java:22)


                    Si le bouton était bien source de l'erreur ( à savoir : manipuler un objet qui n'a pas été initialisé ), on aurait :
                    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
                    at Fenetre.init(Fenetre.java:11)


                    En effet, le pb vient du label, mais c'est plus logique d'appliquer aussi le principe au bouton pour eviter des mauvaises surprises.

                    Au fait, Mets ton sujet en résolu.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    J'ai tous les badges d'OpenClassrooms.

                    le code du livre qui ne marche pas!!

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown