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

Langage Java Discussion :

Du XML au JTable


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 59
    Par défaut Du XML au JTable
    Bonjour je ne parviens pas à extraire mes donnée du fichier xml nommé Maison.xml vers un JTable bref kan j'execute j'ai un message d'erreur que voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Exception in thread "main" java.lang.NullPointerException
    	at ModeleDynamiqueObjet.<init>(ModeleDynamiqueObjet.java:19)
    	at JTableBasiqueAvecModeleDynamique.<init>(JTableBasiqueAvecModeleDynamique.java:10)
    	at JTableBasiqueAvecModeleDynamique.main(JTableBasiqueAvecModeleDynamique.java:59)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 1 second)
    je vous fait voir mes deux fichier de code et le fichier XML ainsi que l'erreur afin que vous me disiez où je fait l'erreur

    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
     
    //fIchier JTable
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import javax.swing.*;
    import maison.*;
     
    public class JTableBasiqueAvecModeleDynamique extends JFrame {
        private ModeleDynamiqueObjet modele = new ModeleDynamiqueObjet();
        private JTable tableau;
     
        public JTableBasiqueAvecModeleDynamique() {
            super();
     
            setTitle("JTable avec modèle dynamique");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            tableau = new JTable(modele);
     
            getContentPane().add(new JScrollPane(tableau), BorderLayout.CENTER);
     
            JPanel boutons = new JPanel();
     
            boutons.add(new JButton(new AddAction()));
            boutons.add(new JButton(new RemoveAction()));
     
            getContentPane().add(boutons, BorderLayout.SOUTH);
     
            pack();
        }
     
     
     
        private class AddAction extends AbstractAction {
            private AddAction() {
                super("Ajouter");
            }
     
            public void actionPerformed(ActionEvent e) {
                modele.addMaison(new Maison(100,"Sami",100, 200,300.0));
            }
        }
     
        private class RemoveAction extends AbstractAction {
            private RemoveAction() {
                super("Supprimmer");
            }
     
            public void actionPerformed(ActionEvent e) {
                int[] selection = tableau.getSelectedRows();
     
                for(int i = selection.length - 1; i >= 0; i--){
                    modele.removeMaison(selection[i]);
                }
            }
        }
        public static void main(String[] args) {
            JTableBasiqueAvecModeleDynamique s=new JTableBasiqueAvecModeleDynamique();
            s.setVisible(true);
        }
     
    }


    voici le fichier où je recupère les donnée
    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
     
     
    import Views2.AccueilProjet;
    import composants.SaveXmlComposants;
    import java.util.ArrayList;
    import java.util.List;
    import javax.swing.table.AbstractTableModel;
    import maison.*;
     
    public class ModeleDynamiqueObjet extends AbstractTableModel {
     
         ArrayList<Maison>   listeMaisons = SaveXmlComposants.getListeMaison("Maisons.xml");
         ArrayList<Maison> listeMaison = null;
         private final String[] entetes = {"Numero", "Nom", "Nombre de Pieces", "Nombre de Composant"};
     
        public ModeleDynamiqueObjet() {
            super();
            for(int i = 0;i<listeMaisons.size();++i)      
     
                listeMaison.add(new Maison(i, listeMaisons.get(i).getNomMaison(), listeMaisons.get(i).getListePiece().size(),listeMaisons.get(i).getListePiece().get(i).getListeComposant().size(),listeMaisons.get(i).getListePiece().get(i).getTempInterne()));   
     
           }
     
        @Override
        public int getRowCount() {
            return listeMaison.size();
        }
     
        @Override
        public int getColumnCount() {
            return entetes.length;
        }
     
        @Override
        public String getColumnName(int columnIndex) {
            return entetes[columnIndex];
        }
     
        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            switch(columnIndex){
                case 0:
                    return listeMaison.get(rowIndex);
                case 1:
                    return listeMaison.get(rowIndex).getNomMaison();
                case 2:
                    return listeMaison.get(rowIndex).getListePiece().size();
                case 3:
                    return listeMaison.get(rowIndex).getListePiece().get(rowIndex).getListeComposant().size();      
                case 4:
                    return listeMaison.get(rowIndex).getListePiece().get(rowIndex).getTempInterne();          
                default:
     
                      return null; //Ne devrait jamais arriver
            }
        }
     
        public void addMaison(Maison m) {
            listeMaison.add(m);
     
            fireTableRowsInserted(listeMaison.size() -1, listeMaison.size() -1);
        }
     
        public void removeMaison(int rowIndex) {
            listeMaison.remove(rowIndex);
     
            fireTableRowsDeleted(rowIndex, rowIndex);
        }
    }
    et voici mon fichier XML
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <Maisons>
      <Maison User="pisix" Nom="pisix">
        <Pieces>
          <piece nom="Chambre" temperature="0.0">
            <composant type="Televiseur">
              <nom>smartphone</nom>
              <degreEmissionChaleur>0.2</degreEmissionChaleur>
              <qteChaleurMaxEmise>4000.0</qteChaleurMaxEmise>
              <qteConsommeUniteTemps>600.0</qteConsommeUniteTemps>
              <niveauCons>2</niveauCons>
              <SourceEnergie>sourcesEnergie.Electricite@e1899b</SourceEnergie>
              <EtatComposant>false</EtatComposant>
            </composant>
            <composant type="Televiseur">
              <nom>tv</nom>
              <degreEmissionChaleur>0.2</degreEmissionChaleur>
              <qteChaleurMaxEmise>4000.0</qteChaleurMaxEmise>
              <qteConsommeUniteTemps>600.0</qteConsommeUniteTemps>
              <niveauCons>2</niveauCons>
              <SourceEnergie>sourcesEnergie.Electricite@1113622</SourceEnergie>
              <EtatComposant>false</EtatComposant>
            </composant>
          </piece>
          <piece nom="salon" temperature="0.0" />
          <piece nom="cuisine" temperature="0.0" />
        </Pieces>
      </Maison>
    </Maisons>

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    Donne nous l'erreur aussi, ce sera plus facile de savoir d'où elle vient

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 59
    Par défaut
    J'ai modifié le message en insérant l'erreur au dessus je m'en excuse c'était un oubli

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    Merci bien,

    je pense que ton erreur est dans le constructeur de ModeleDynamiqueObjet. Tu n'as pas initialisé listeMaison

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public ModeleDynamiqueObjet() {
            super();
            for(int i = 0;i<listeMaisons.size();++i)      
     
                listeMaison.add(new Maison(i, listeMaisons.get(i).getNomMaison(), listeMaisons.get(i).getListePiece().size(),listeMaisons.get(i).getListePiece().get(i).getListeComposant().size(),listeMaisons.get(i).getListePiece().get(i).getTempInterne()));   
     
           }
    rajoute ca dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listmaison = new ArrayList();

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 59
    Par défaut
    j'ai ajouté la ligne dans le constructeur mais le problement c'est quoi si tu regarde bien le code toutes les methodes suivantes depende de la variable listeMaison or en la mettant dans le constructeurs toutes les methodes qui dependent d'elle me signale une erreur que faire dans ce cas ???

    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
     
     
    import Views2.AccueilProjet;
    import composants.SaveXmlComposants;
    import java.util.ArrayList;
    import java.util.List;
    import javax.swing.table.AbstractTableModel;
    import maison.*;
     
    public class ModeleDynamiqueObjet extends AbstractTableModel {
     
         ArrayList<Maison>   listeMaisons = SaveXmlComposants.getListeMaison("Maisons.xml");
     
         private final String[] entetes = {"Numero", "Nom", "Nombre de Pieces", "Nombre de Composant"};
     
        public ModeleDynamiqueObjet() {
             super();
             ArrayList listeMaison = new ArrayList();
     
            for(int i = 0;i<listeMaisons.size();++i)      
     
                listeMaison.add(new Maison(i, listeMaisons.get(i).getNomMaison(), listeMaisons.get(i).getListePiece().size(),listeMaisons.get(i).getListePiece().get(i).getListeComposant().size(),listeMaisons.get(i).getListePiece().get(i).getTempInterne()));   
     
           }
     
        @Override
        public int getRowCount() {
            return listeMaison.size();
        }
     
        @Override
        public int getColumnCount() {
            return entetes.length;
        }
     
        @Override
        public String getColumnName(int columnIndex) {
            return entetes[columnIndex];
        }
     
        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            switch(columnIndex){
                case 0:
                    return listeMaison.get(rowIndex);
                case 1:
                    return listeMaison.get(rowIndex).getNomMaison();
                case 2:
                    return listeMaison.get(rowIndex).getListePiece().size();
                case 3:
                    return listeMaison.get(rowIndex).getListePiece().get(rowIndex).getListeComposant().size();      
                case 4:
                    return listeMaison.get(rowIndex).getListePiece().get(rowIndex).getTempInterne();          
                default:
     
                      return null; //Ne devrait jamais arriver
            }
        }
     
        public void addMaison(Maison m) {
            listeMaison.add(m);
     
            fireTableRowsInserted(listeMaison.size() -1, listeMaison.size() -1);
        }
     
        public void removeMaison(int rowIndex) {
            listeMaison.remove(rowIndex);
     
            fireTableRowsDeleted(rowIndex, rowIndex);
        }
    }

  6. #6
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    En fait tes erreurs :
    - la première fois tu la déclaré mais pas initialisé ()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<Maison> listeMaison = null;
    - la deuxième tu l'a déclaré au sein de ton constructeur, donc une fois le constructeur fini il n'existe plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public ModeleDynamiqueObjet() {
             super();
             ArrayList listeMaison = new ArrayList();
             //...
    }

    Tu as 2 solutions pour palier le problème:
    - tu l'initialise directement dans tes attributs :

    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
     
    public class ModeleDynamiqueObjet extends AbstractTableModel {
     
         ArrayList<Maison>   listeMaisons = SaveXmlComposants.getListeMaison("Maisons.xml");
         ArrayList listeMaison = new ArrayList();
         private final String[] entetes = {"Numero", "Nom", "Nombre de Pieces", "Nombre de Composant"};
     
        public ModeleDynamiqueObjet() {
             super();
     
            for(int i = 0;i<listeMaisons.size();++i)      
     
                listeMaison.add(new Maison(i, listeMaisons.get(i).getNomMaison(), listeMaisons.get(i).getListePiece().size(),listeMaisons.get(i).getListePiece().get(i).getListeComposant().size(),listeMaisons.get(i).getListePiece().get(i).getTempInterne()));   
     
           }
    //.....
    }
    - ou tu le déclare dans tes attributs et l'initialise dans le constructeur :

    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
     
    public class ModeleDynamiqueObjet extends AbstractTableModel {
     
         ArrayList<Maison>   listeMaisons = SaveXmlComposants.getListeMaison("Maisons.xml");
         ArrayList listeMaison;
         private final String[] entetes = {"Numero", "Nom", "Nombre de Pieces", "Nombre de Composant"};
     
        public ModeleDynamiqueObjet() {
             super();
             listemaison = new ArrayList();
            for(int i = 0;i<listeMaisons.size();++i)      
     
                listeMaison.add(new Maison(i, listeMaisons.get(i).getNomMaison(), listeMaisons.get(i).getListePiece().size(),listeMaisons.get(i).getListePiece().get(i).getListeComposant().size(),listeMaisons.get(i).getListePiece().get(i).getTempInterne()));   
     
           }
    //.....
    }

Discussions similaires

  1. Jtable et XML
    Par soussou92 dans le forum Composants
    Réponses: 1
    Dernier message: 02/01/2010, 21h57
  2. [XML] & [JTable]
    Par bond681 dans le forum Composants
    Réponses: 2
    Dernier message: 08/11/2009, 19h41
  3. JTable, XML et CLASSPATH
    Par Maxiflo dans le forum Composants
    Réponses: 2
    Dernier message: 18/12/2008, 09h17
  4. Correspondance entre un JTable et un fichier xml
    Par bossy451 dans le forum Composants
    Réponses: 0
    Dernier message: 29/10/2008, 02h41
  5. Mapping XML et JTable ?
    Par budhax dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 01/07/2007, 15h52

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