Précédent   Forum des professionnels en informatique > Java > Général Java > Langage
Langage Forum d'entraide sur le langage Java et autres langages pour la JVM : syntaxe, POO, conventions, API standard. Avant de poster -> FAQ Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2012, 13h28   #1
Invité de passage
 
Homme pisix
Étudiant
Inscription : septembre 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme pisix
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 29
Points : 3
Points : 3
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 :
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 :
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 :
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 :
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>
leconteconte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 13h30   #2
Membre confirmé
 
Inscription : décembre 2009
Messages : 249
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 249
Points : 219
Points : 219
Donne nous l'erreur aussi, ce sera plus facile de savoir d'où elle vient
ticroch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 13h32   #3
Invité de passage
 
Homme pisix
Étudiant
Inscription : septembre 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme pisix
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 29
Points : 3
Points : 3
J'ai modifié le message en insérant l'erreur au dessus je m'en excuse c'était un oubli
leconteconte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 13h40   #4
Membre confirmé
 
Inscription : décembre 2009
Messages : 249
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 249
Points : 219
Points : 219
Merci bien,

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

Code :
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 :
1
2
 
listmaison = new ArrayList();
ticroch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 13h51   #5
Invité de passage
 
Homme pisix
Étudiant
Inscription : septembre 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme pisix
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 29
Points : 3
Points : 3
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 :
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);
    }
}
leconteconte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 13h58   #6
Membre confirmé
 
Inscription : décembre 2009
Messages : 249
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 249
Points : 219
Points : 219
En fait tes erreurs :
- la première fois tu la déclaré mais pas initialisé ()
Code :
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 :
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 :
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 :
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()));   
 
       }
//.....
}
ticroch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 14h05   #7
Invité de passage
 
Homme pisix
Étudiant
Inscription : septembre 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme pisix
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 29
Points : 3
Points : 3
Là je vais en cours s'il te plait tu peux me donner une exemple d'initialisation quelque soit le type afin qu'a mon retour je puisse tester ??
Merci d'avance
leconteconte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 14h07   #8
Membre confirmé
 
Inscription : décembre 2009
Messages : 249
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 249
Points : 219
Points : 219
oui j'ai juste oublier de donner le type Maison :

Code :
1
2
 
ArrayList<Maison> listeMaison = new ArrayList<Maison>();
ticroch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 21h05   #9
Invité de passage
 
Homme pisix
Étudiant
Inscription : septembre 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme pisix
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 29
Points : 3
Points : 3
cette methode mes posait des soucie j'ai opté pour un style plus simple dans une premier temps voila le code que j'ai maintenant
Code :
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
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package composants;
 
/**
 *
 * @author pisix
 */
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
 
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import maison.Maison;
 
 
public class Fenetre extends JFrame {
 
	private JTable tableau;
	private JButton change = new JButton("Changer la taille");
 
	public Fenetre(){
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setTitle("JTable");
		this.setSize(600, 140);
                String  title[] = {"Numero", "Nom Maison", "Nombre de Piece", "Nombre de Cmposant","Temperature"};
                ArrayList<Maison>   listeMaisons = SaveXmlComposants.getListeMaison("Maisons.xml");
		 System.out.println(""+listeMaisons.size());
                Object[][] data = new Object[listeMaisons.size()][5]; 
                System.out.println(""+listeMaisons.size());
                for(int i=0;i<(listeMaisons.size());++i){
                            int j=i+1;
                            System.out.println("toto"+j);
                            data[i][0]=(j);
                            data[i][1]=listeMaisons.get(i).getNomMaison();
                            data[i][2]=listeMaisons.get(i).getListePiece().size();
                            //data[i][3]=2;
                            data[i][3]=listeMaisons.get(i).getListePiece().get(i).getListeComposant().size();
                            data[i][4]=listeMaisons.get(i).getListePiece().get(i).getTempInterne();
 
                    }
      		this.tableau = new JTable(data, title);
                this.getContentPane().add(this.tableau);
 
        }
 
    public static void main(String[] args){
	Fenetre fen = new Fenetre();
	fen.setVisible(true);
	}
}
avec le meme fichier XML que plus haut le probleme c'est que cette fois ci il m'enregistre les composant mais uniquement les 4 premieres maison s'il y'en a plus dans le fichier XML il me génère l'erreur suivante
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
run:
8
8
toto1
toto2
toto3
toto4
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
	at java.util.ArrayList.RangeCheck(ArrayList.java:547)
	at java.util.ArrayList.get(ArrayList.java:322)
	at composants.Fenetre.<init>(Fenetre.java:49)
	at composants.Fenetre.main(Fenetre.java:58)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
le probleme est à quel niveau???
leconteconte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 06h46   #10
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 145
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 145
Points : 7 282
Points : 7 282
Bonjour,

1- Pour mieux parcourir un List, utilise un iterator.
2- L'erreur vient du fait que "listeMaisons.get(i).getListePiece()" à la ligne 49 que la taille de listePiece est inférieur à 4 or que tu veux récupérer l'objet à l'index 3. D'ailleurs avec ton code, tu ne récupères que la pièce à l'indexe i de listePiece. Tu dois parcourir listePiece est cumulé le nombre de composant pour chaque maison.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 07h02   #11
Invité de passage
 
Homme pisix
Étudiant
Inscription : septembre 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme pisix
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 29
Points : 3
Points : 3
Après vos suggestion j'ai eu à modifier le code comme ci-dessous
Code :
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
 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package composants;
 
/**
 *
 * @author pisix
 */
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
 
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import maison.Maison;
import maison.Piece;
 
 
public class Fenetre extends JFrame {
 
	private JTable tableau;
	private JButton change = new JButton("Changer la taille");
       	private List<Maison> p;
        private List<Piece> pi;
        private String[] columnNames = new String[]{"Numero", "Nom_Maison", "Nombre de Piece", "Nombre de Cmposant","Temperature"};
        private Object[][] data;
	public Fenetre(){
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setTitle("Maisons");
		this.setSize(600, 140);
 
                data = new Object[p.size()][5];
                Maison pp = null;
                Piece pie = null;
 
               for (int i = 0; i < p.size(); i++) {
                pp = (Maison) p.get(i);
                pie =(Piece) pi.get(i);
                data[i][0] = i+1;
                data[i][1] = pp.getNomMaison();
                data[i][2] = pp.getListePiece().size();
                data[i][3]=pie.getListeComposant().size();
                data[i][4]=pie.getTempInterne();
            }
 
 
 
      		this.tableau = new JTable(data, columnNames );
                this.getContentPane().add(this.tableau);
 
        }
 
 
    public static void main(String[] args){
	Fenetre fen = new Fenetre();
	fen.setVisible(true);
	}
}

et quand je l'execute j'ai l'erreur ci dessous
Code :
1
2
3
4
5
6
 
Exception in thread "main" java.lang.NullPointerException
	at composants.Fenetre.<init>(Fenetre.java:47)
	at composants.Fenetre.main(Fenetre.java:70)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
leconteconte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 07h28   #12
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 145
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 145
Points : 7 282
Points : 7 282
Parceque p n'est pas instancié avant cette ligne
Citation:
data = new Object[p.size()][5];
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 09h19   #13
Invité de passage
 
Homme pisix
Étudiant
Inscription : septembre 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme pisix
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 29
Points : 3
Points : 3
Ah oui c'est vrai lorsque j'intancie ça fonctionne maintenant mon probleme repose sur la recuperation des pieces contenu dans les maisons
car meme avec ce code

Code :
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
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package composants;
 
/**
 *
 * @author pisix
 */
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
 
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import maison.Maison;
import maison.Piece;
 
 
public class Fenetre extends JFrame {
 
	private JTable tableau;
	private JButton change = new JButton("Changer la taille");
       	private List<Maison> p;
        private List<Piece> pi;
        private String[] columnNames = new String[]{"Numero", "Nom_Maison", "Nombre de Piece", "Nombre de Cmposant","Temperature"};
        private Object[][] data;
	public Fenetre(){
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setTitle("Maisons");
		this.setSize(600, 140);
               p=SaveXmlComposants.getListeMaison("Maisons.xml");
               data = new Object[p.size()][5];
                Maison pp = null;
                Piece pie = null;
 
               for (int i = 0; i < p.size(); i++) {
                pp = (Maison) p.get(i);
                pi=p.get(i).getListePiece();
                pie =(Piece) pi.get(i);
 
                data[i][0] = i+1;
                data[i][1] = pp.getNomMaison();
                data[i][2] = pp.getListePiece().size();
                data[i][3]=pie.getListeComposant().size();
                data[i][4]=pie.getTempInterne();
            }
 
 
 
      		this.tableau = new JTable(data, columnNames );
                this.getContentPane().add(this.tableau);
 
        }
 
 
    public static void main(String[] args){
	Fenetre fen = new Fenetre();
	fen.setVisible(true);
	}
}

j'ai toujours l'erreur
Code :
1
2
3
4
5
6
7
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
	at java.util.ArrayList.RangeCheck(ArrayList.java:547)
	at java.util.ArrayList.get(ArrayList.java:322)
	at composants.Fenetre.<init>(Fenetre.java:49)
	at composants.Fenetre.main(Fenetre.java:67)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
que faire , qu'est ce que je ne fais pas??, qu'est ce que je ne vois pas??
leconteconte est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h32.


 
 
 
 
Partenaires

Hébergement Web