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
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 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)
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
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
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); } }
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>
Partager