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 :

Erreur java lang NullPointerException


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Par défaut Erreur java lang NullPointerException
    Bonjour à tous,

    Je travaille sur une application Swing où j'ai créé une fenêtre sur laquelle on peut remplir les champs nom, prénom, on choix le fichier photo ainsi que le semestre souhaité; on clique le bouton valider et une autre fenêtre s'ouvre avec les infos de la première fenêtre en plus d'autres champs pour les moyennes de chaque matière, un bouton pour enregistrer toutes ces infos dans un fichier d'objet .dat.

    Mon souci est qu'en cliquant sur le bouton enregistrer dans la seconde fenêtre, il y a un message d'erreur:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Introduction.BulletinNotes.enregistrementBtnActionPerformed(BulletinNotes.java:333)
    at Introduction.BulletinNotes.access$200(BulletinNotes.java:19)
    at Introduction.BulletinNotes$3.actionPerformed(BulletinNotes.java:227)

    Voici le code:
    Pour la première fenêtre:
    Le bouton valider:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        private void validerBtnActionPerformed(java.awt.event.ActionEvent evt) {                                           
            // TODO add your handling code here:
            String nom = nomAsaisir.getText();
            String prenom = prenomAsaisir.getText();
            double[] moyenne = new double[listeMatieres.length];
            for(int i = 0; i < moyenne.length; i++)
                moyenne[i] = 0;
            Etudiant eleve = new Etudiant(nom, prenom, urlPhoto, listeMatieres, periode, moyenne);
            BulletinNotes bn = new BulletinNotes(eleve);
        }
    Le constructeur bulletinNotes fait appel à la seconde fenêtre.
    Pour la seconde fenêtre:
    Le bouton enregistrer:
    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
     
    /*19*/public class BulletinNotes extends javax.swing.JFrame {
        private Etudiant etudiant;
     
     
        /** Creates new form BulletinNotes */
        public BulletinNotes(Etudiant tmp) {
            setVisible(true);
            initComponents();
            this.setBounds(100, 100, 450, 500);
            etudiant = tmp;
     
            nomEtudiant.setText(etudiant.getNom());
            prenomEtudiant.setText(etudiant.getPrenom());
            semestre.setText(etudiant.getSemestre());
            String[] listeMatieres = etudiant.getMatieres();
     
            matiereLue1.setText(listeMatieres[0]);
            matiereLue2.setText(listeMatieres[1]);
            matiereLue3.setText(listeMatieres[2]);
            matiereLue4.setText(listeMatieres[3]);
            matiereLue5.setText(listeMatieres[4]);
     
            double[] listeMoyenne = etudiant.getMoyenne();
            moyenne1.setText(Double.toString(listeMoyenne[0]));
            moyenne2.setText(Double.toString(listeMoyenne[1]));
            moyenne3.setText(Double.toString(listeMoyenne[2]));
            moyenne4.setText(Double.toString(listeMoyenne[3]));
            moyenne5.setText(Double.toString(listeMoyenne[4]));
     
            ImageIcon iconPhoto = new ImageIcon(etudiant.getPhoto());
            photoEtudiant.setIcon(iconPhoto);
        }
     
     
        private void calculerBtnActionPerformed(java.awt.event.ActionEvent evt) {                                            
            // TODO add your handling code here:
            String moyenneTxt1 = moyenne1.getText();
            float m1 = Float.parseFloat(moyenneTxt1);
            etudiant.setMoyenne(m1, 0);
     
            String moyenneTxt2 = moyenne2.getText();
            float m2 = Float.parseFloat(moyenneTxt2);
            etudiant.setMoyenne(m2, 1);
     
            String moyenneTxt3 = moyenne3.getText();
            float m3 = Float.parseFloat(moyenneTxt3);
            etudiant.setMoyenne(m3, 2);
     
            String moyenneTxt4 = moyenne4.getText();
            float m4 = Float.parseFloat(moyenneTxt4);
            etudiant.setMoyenne(m4, 3);
     
            String moyenneTxt5 = moyenne5.getText();
            float m5 = Float.parseFloat(moyenneTxt5);
            etudiant.setMoyenne(m5, 4);
     
            float resultat = (m1 + m2 + m3 + m4 + m5) / 5;
            moyenneGenerale.setText(Float.toString(resultat));
        }                                           
     
        private void fermerBtnActionPerformed(java.awt.event.ActionEvent evt) {                                          
            // TODO add your handling code here:
            this.dispose();
        }                                         
     
        private void enregistrementBtnActionPerformed(java.awt.event.ActionEvent evt) {                                                  
            // TODO add your handling code here:
            Etudiant e = new Etudiant(etudiant.getNom(), etudiant.getPrenom(), 
                    etudiant.getPhoto(), etudiant.getMatieres(), etudiant.getSemestre(), etudiant.getMoyenne());
            Cursus promo = new Cursus();
            FichierEtudiant f = new FichierEtudiant();
            if(f.ouvrir("L")) {
                promo = f.lire();
                f.fermer();
            }        
      /*333*/     promo.ajouteUnEtudiant(etudiant.getNom(), etudiant.getPrenom(), etudiant.getPhoto(),
                      etudiant.getMatieres(), etudiant.getSemestre(), etudiant.getMoyenne());
            f.ouvrir("W");
            f.ecrire(promo);
            f.fermer();
        }                                                                 
    }
    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    de toute évidence, promo est null, ce qui veux dire que f.lire() t'as retourné une valeur nulle.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Par défaut
    Merci tchize de m'avoir répondu, alors comment puis-je faire pour initialiser mon objet promo de type Cursus?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en modifiant ta méthode f.lire pour qu'elle retourne quelque chose et pas null?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    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
     
    public class FichierEtudiant  {
      private ObjectOutputStream fWo;
      private ObjectInputStream fRo;
      private char mode;
     
      private String nomDuFichier = "/Users/VotreCompte/Ressources/Cursus.dat";
      public boolean ouvrir(String s) 	{
        try {
    	 mode = (s.toUpperCase()).charAt(0);
    	 if (mode == 'R' || mode == 'L') 
    		fRo = new ObjectInputStream(new FileInputStream(nomDuFichier));
    	 else 	if (mode == 'W' || mode == 'E') 
    		fWo = new ObjectOutputStream(new FileOutputStream(nomDuFichier));
             return true;
         } 
        catch (IOException e){
            System.out.print("erreur : "+ e);
             return false;
        }
      }
      public void fermer()  {
       try {
    	if (mode == 'R' || mode == 'L') fRo.close();
    	else	if (mode == 'W' || mode == 'E')  fWo.close();
            } 
        catch (IOException e)	{
       	  System.out.print("erreur : "+ e);
        }
      }
      public Cursus lire()   {
        try {
             Cursus tmp = (Cursus) fRo.readObject();
    	return tmp;
         } 
        catch (IOException e)	{
            System.out.print("erreur : "+ e);
       	return null;
        }
         catch (ClassNotFoundException e)	{
            System.out.print("erreur : "+ e);
       	return null;
        }
      }
      public void ecrire(Cursus tmp) {
          try {
               if (tmp != null)  fWo.writeObject(tmp);
          } 
          catch (IOException e) {
                System.out.print("erreur : "+ e);
        }
      }
    }

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Premièrement, est-ce que le if(f.ouvrir("L")) que tu fais avant renvoie bien true? Vérifie que rentre bien dans le if, sinon promo sera forcément null. Ensuite, ta méthode lire() renvoie null dès qu'il y a un problème, ou même si null est présent dans l'object stream. Assure toi de traiter mieux que ça tes erreurs dabs lire(), en faisant remonter les exceptions plutôt que de retourne null. Ensuite, si tu as effectivement un null dans le stream, à toi de voir pourquoi, après tout, c'est toi qui a écrit ce fichier Enfin, dans ton action performed, considère que promo peut être null et fais ton traitement en conséquence. Là pour le moment tu fonce sans vérifier, et forcément, quand promo est null, ça ne marche plus.

Discussions similaires

  1. Erreur java. lang.NullPointerException
    Par hicham.gi dans le forum Struts 1
    Réponses: 17
    Dernier message: 03/06/2009, 11h11
  2. Réponses: 0
    Dernier message: 26/12/2007, 17h28
  3. Réponses: 32
    Dernier message: 20/04/2007, 21h56
  4. [Débutant] Erreur java.lang.NullPointerException
    Par Kevin12 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/02/2007, 15h48
  5. Probleme erreur java.lang.NullPointerException
    Par Tsukaasa dans le forum Langage
    Réponses: 4
    Dernier message: 25/05/2006, 18h19

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