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

Interfaces Graphiques en Java Discussion :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException


Sujet :

Interfaces Graphiques en Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    Bonjour à tous,

    Merci à tous pour votre aide.

    Voici tout d'abord mon erreur:

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at jeu.ChoixMode.faireNord(ChoixMode.java:27)
    at jeu.FenetreDuJeu.<init>(FenetreDuJeu.java:35)
    at jeu.ChoixMode.<init>(ChoixMode.java:18)
    at jeu.Jeu.suite(Jeu.java:37)
    at jeu.Jeu.creationJoueur(Jeu.java:29)
    at jeu.AccueilDuJeu.actionPerformed(AccueilDuJeu.java:162)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:5488)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
    at java.awt.Component.processEvent(Component.java:5253)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3955)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1778)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    Cette erreur intervient lorsque je clique sur le bouton listener de "AccueilDuJeu".

    public void actionPerformed(ActionEvent e){
    if (e.getSource() == suite){
    jeu.creationJoueur(nomField.getText(), prenomField.getText(), (String)listeUnivers.getSelectedItem());
    }
    La classe Jeu, contient ces méthodes:

    public class Jeu {
    FenetreDuJeu fenetreDuJeu;
    Joueur joueur;

    public void debutDuJeu(){
    fenetreDuJeu = new AccueilDuJeu (this);
    fenetreDuJeu.setVisible(true);
    }

    public void creationJoueur(String nom, String prenom, String univers) {
    joueur = new Joueur(nom,prenom,univers);
    //System.out.println(joueur.getUnivers());
    fenetreDuJeu.setVisible(false);
    suite();
    }

    public Joueur getJoueur(){
    return joueur;
    }

    public void suite(){
    fenetreDuJeu = new ChoixMode(this);
    fenetreDuJeu.setVisible(true);
    }

    /** Creates a new instance of Jeu */
    public Jeu() {
    joueur = new Joueur("test", "test", "test");
    debutDuJeu();
    }

    }
    Voici la ligne de ma classe ChoixMode incriminée:

    JLabel nomLabel = new JLabel("Nom : " + jeu.joueur.getNom());
    Hors, joueur est bel et bien instancié dans le constructeur de Jeu.java.

    Voilà je trifouille depuis des heures et je vois pas comment réparer mon erreur...

    Merci,

    Trint.

    PS; AccueilDuJeu et ChoixMode héritent de FenetreDuJeu qui hérite de JFrame.

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    at jeu.ChoixMode.faireNord(ChoixMode.java:27)
    C'est là que ça plante selon la stacktrace alors c'est le code (complet) de la classe ChoixMode qu'il faut que tu nous files. Le reste ne sert pas à grand chose sans ça.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public class ChoixMode extends FenetreDuJeu{
    //    Joueur joueur;
     
     
        /** Creates a new instance of AccueilDuJeu */
        public ChoixMode(Jeu jeu) {
            super(jeu);
            }
     
        public void faireNord(){
            JPanel panelNord = new JPanel();
            panelNord.setSize(1024,20);
     
    //        System.out.println(jeu.getJoueur().getNom());
     
            JLabel nomLabel = new JLabel("Nom : " + jeu.joueur.getNom());
            nomLabel.setPreferredSize(new Dimension(150,15));
            panelNord.add(nomLabel);
     
            this.getContentPane().add(panelNord, BorderLayout.NORTH);
        }
     
        public void faireOuest(){
            JPanel panelOuest = new JPanel();
            panelOuest.setSize(20,768);
     
            this.getContentPane().add(panelOuest, BorderLayout.WEST);
        }
     
        public void faireCentre(){
            JPanel panelCentre = new JPanel();
            panelCentre.setLayout(new GridBagLayout());
     
            GridBagConstraints c = new GridBagConstraints();
     
     
            Font f = new Font("Helvetica", Font.BOLD + Font.ITALIC, 30);
     
            JButton mode1 = new JButton("Mode1 >>>");
            mode1.setPreferredSize(new Dimension(300,200));
            mode1.addActionListener(this) ;
     
            c.gridx=0;
            c.gridy=0;
            c.insets.top=50;
            c.insets.bottom=0;
            c.insets.right=0;
            c.insets.left=50;
            c.weightx=0;
            c.weighty=0;
     
            panelCentre.add(mode1, c);
     
            JButton mode2 = new JButton("Mode2 >>>");
            mode2.setPreferredSize(new Dimension(300,200));
            mode2.addActionListener(this) ;
     
            c.gridx=1;
            c.gridy=0;
            c.insets.top=50;
            c.insets.bottom=0;
            c.insets.right=50;
            c.insets.left=100;
            c.weightx=0;
            c.weighty=0;
     
            panelCentre.add(mode2, c);
     
            JButton mode3 = new JButton("Mode3 >>>");
            mode3.setPreferredSize(new Dimension(300,200));
            mode3.addActionListener(this) ;
     
            c.gridx=0;
            c.gridy=1;
            c.insets.top=100;
            c.insets.bottom=50;
            c.insets.right=0;
            c.insets.left=50;
            c.weightx=0;
            c.weighty=0;
     
            panelCentre.add(mode3, c);
     
            JButton mode4 = new JButton("Mode4 >>>");
            mode4.setPreferredSize(new Dimension(300,200));
            mode4.addActionListener(this) ;
     
            c.gridx=1;
            c.gridy=1;
            c.insets.top=100;
            c.insets.bottom=50;
            c.insets.right=50;
            c.insets.left=100;
            c.weightx=0;
            c.weighty=0;
     
            panelCentre.add(mode4, c);
     
            this.getContentPane().add(panelCentre, BorderLayout.CENTER);
        }
     
        public void faireEst(){
            JPanel panelEst = new JPanel();
            panelEst.setSize(20,768);
     
            this.getContentPane().add(panelEst, BorderLayout.EAST);
        }
     
        public void faireSud(){
            JPanel panelSud = new JPanel();
            panelSud.setSize(1024,20);
     
            this.getContentPane().add(panelSud, BorderLayout.SOUTH);
        }
     
        public void actionPerformed(ActionEvent e){
     
        }
     
    }

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Humf ça m'a pas l'air clair, tu pourrais aussi poster le code de FenetreDuJeu stp ? Ca aidera grandement.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bien sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    abstract class FenetreDuJeu extends JFrame implements ActionListener{
     
        Jeu jeu;
     
        public FenetreDuJeu(Jeu jeu){
    	super();
     
            setTitle("Jeu")
            setDefaultLookAndFeelDecorated(true);
            setSize(1024,768);
            setLocationRelativeTo(null); 
            setResizable(false) ;
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            GraphicsDevice myDevice = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
            Window myWindow = new Window(this);
            if( myDevice.isFullScreenSupported() ) {
                    try {
                            myDevice.setFullScreenWindow(myWindow);
     
                    } finally {
                            myDevice.setFullScreenWindow(null);
                    } 
            } else {
                    System.err.println("Plein écran non supporté");
            }
     
     
            faireNord();
            faireOuest();
            faireCentre();
            faireEst();
            faireSud();
     
            setVisible(true);
            this.jeu = jeu;
        }
     
        abstract public void faireNord();
        abstract public void faireOuest();
        abstract public void faireCentre();
        abstract public void faireEst();
        abstract public void faireSud();
        abstract public void actionPerformed(ActionEvent e);
     
    }// fin de FenetreDuJeu

  6. #6
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Trouvé !!!
    Corrigé le constructeur de FenetreDuJeu comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
        public FenetreDuJeu(Jeu jeu){
    	super();
            this.jeu = jeu; // <-- déplacer l'affectation ici
     
            setTitle("Jeu")
            setDefaultLookAndFeelDecorated(true);
            setSize(1024,768);
            setLocationRelativeTo(null); 
            setResizable(false) ;
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            GraphicsDevice myDevice = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
            Window myWindow = new Window(this);
            if( myDevice.isFullScreenSupported() ) {
                    try {
                            myDevice.setFullScreenWindow(myWindow);
     
                    } finally {
                            myDevice.setFullScreenWindow(null);
                    } 
            } else {
                    System.err.println("Plein écran non supporté");
            }
     
     
            faireNord(); // <-- appel à faireNord qui fait planter !
            faireOuest();
            faireCentre();
            faireEst();
            faireSud();
     
            setVisible(true);
            //this.jeu = jeu; // <-- l'affectation se fait trop tard, il faut faire dès le début du constructeur
        }
    J'ai simplement mis "this.jeu = jeu;" juste après l'appel à super() car tu appelais faireNord() avant que jeu soit affecté d'où la NPE.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Oh purée j'ai honte...

    Merci beaucoup en tout cas !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/02/2010, 08h23
  2. Réponses: 5
    Dernier message: 24/02/2008, 22h58
  3. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException ?
    Par freezerhm dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 04/12/2007, 09h26
  4. Réponses: 8
    Dernier message: 11/05/2006, 19h32
  5. [JDIC]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    Par kedare dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 06/05/2006, 22h45

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