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

avec Java Discussion :

NullPointerException dans mon constructeur


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut NullPointerException dans mon constructeur
    Bonjour,
    j'ai essayé de rouler mon programme java bien que ça compile bien mais ça m'affiche après l'avoir roulé quelque chose du genre :
    Exception in thread "main" java.lang.NullPointerException
    at Cell.setIcon(App.java:30)
    at Cell.<init>(App.java:25)
    at App.<init>(App.java:46)
    at App.main(App.java:58)


    Je ne sais pas vraiment comment résoudre ce problème et j'ai vraiment besoin d'aide... j'ai beau regarder mais je ne trouve rien !
    Voici mon code :

    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
    import java.awt.Color;
    import java.awt.GridLayout;
    import java.awt.event.*;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
     
    class Cell extends JButton {
     
        private static final int NUM_COLOURS = 3;
     
        private ImageIcon[] icons;
        private int type;
     
        public Cell() {
     ImageIcon[] icons;
     
     icons = new ImageIcon[NUM_COLOURS];
     for (int i=0; i<NUM_COLOURS; i++) {
         icons[i] = new ImageIcon("data/ball-" + Integer.toString(type) + ".png");
     }
     
         this.type = 0;
         setBackground(Color.WHITE);
         setIcon();
         setBorderPainted(false);
        }
     
        private void setIcon() {
     setIcon(icons[type]);
        }
     
        public void update() {
         type = type + 1;
         setIcon();
        }
     
    }
     
    public class App extends JFrame implements ActionListener {
     
        private Cell myCell;
     
        public App() {
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     myCell = new Cell();
     myCell.addActionListener(this);
     add(myCell);
     pack();
     setVisible(true);
        }
     
        public void actionPerformed(ActionEvent e) {
     myCell.update();
        }
     
        public static void main(String[] args) {
     new App();
        }
    }
    Merci !

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    attention, la variable ImageIcon[] icons tu la déclares deux fois.

    Une fois dans la classe, ça c'est bien. Une fois dans le constructeur, ça il ne faut pas. Il ne faut pas déclarer la même variable plus d'une fois.
    Puisque ta variable est déjà déclarée dans la classe, le constructeur peut s'en servir sans problème. Ne la redéclare pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Oops... Merci, vous avez raison !
    J'avais oublié de l'enlever...
    En fait moi mon problème c'est l'erreur du Cell.setIcon
    J'ai recherché mais je ne trouve rien !!

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Et de quelle erreur parle-t-on au juste ?
    L'erreur que tu as montrée au début, elle n'est là qu'à cause de cette variable déclarée deux fois. Si tu l'enlèves, cette erreur n'existe plus.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Erreur de connexion : java RMI & linux
    Par pedouille dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/05/2006, 20h04
  2. [VB6] Erreur d'éxécution 3001
    Par boudincweole10 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/04/2006, 14h39
  3. Erreur appel fonction java d'une jsp
    Par itachi38 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 29/04/2006, 16h51
  4. [VB]Erreur d'éxécution 80040e10
    Par Methodmay31 dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 14/03/2006, 15h51
  5. [Etat][Requête] Erreur d'éxécution '3364'
    Par Optimus dans le forum IHM
    Réponses: 2
    Dernier message: 05/01/2006, 14h24

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