j'ai pas compris ArrayList<OmagValeur>.
et pourqoi la boucle for ne marche pas
merci
Version imprimable
j'ai pas compris ArrayList<OmagValeur>.
et pourqoi la boucle for ne marche pas
merci
Il me semble que ton dataTout n'est jamais initialisé.
si la boucle tourne sans problème et dataTout soit bien remplie, mon problème
sera résolu
j'ai fait çarien n'a changéCode:Object[][] dataTout={null,null,null,null,null};
dataPJ; n'est pas initialisé et se remplie sans probléme
merci
Quand je dis initialiser dataTout c'est pas
mais plutot par exemple :Code:Object[][] dataTout={null,null,null,null,null};
Car ce que tu as mis ne te permet que d'avoir un et un SEUL objet ! dans ton dataTout.Code:Object[][] dataTout = new Object[nbLigne][nbColonne];
Tiens essayes ceci (c'est bien entendu à adapter avec ton code car je n'ai pas vu la JFrame) :
La classe POJO de tes enregistrements :
La classe TableModel :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 public class Omag { private Object dataRefProduit = null; private Object dataPJ = null; private Object dataPC = null; private Object dataLJ = null; private Object dataLC = null; public Omag() { } public Object getDataRefProduit() { return dataRefProduit; } public void setDataRefProduit(Object dataRefProduit) { this.dataRefProduit = dataRefProduit; } public Object getDataPJ() { return dataPJ; } public void setDataPJ(Object dataPJ) { this.dataPJ = dataPJ; } public Object getDataPC() { return dataPC; } public void setDataPC(Object dataPC) { this.dataPC = dataPC; } public Object getDataLJ() { return dataLJ; } public void setDataLJ(Object dataLJ) { this.dataLJ = dataLJ; } public Object getDataLC() { return dataLC; } public void setDataLC(Object dataLC) { this.dataLC = dataLC; } }
La classe de rendu :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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 class OmagTableModel extends AbstractTableModel { private ArrayList<String> nomColonnes = new ArrayList<String>(5); private ArrayList<Omag> data = null; public OmagTableModel() { nomColonnes.add(0,"Réference du produi"); nomColonnes.add(1,"Production du jour"); nomColonnes.add(2,"Production Cumulée"); nomColonnes.add(3,"Livraison du jour"); nomColonnes.add(4,"Livraison Cumulée"); data = new ArrayList<Omag>(); majDonnees(data); } /** Met à jour les données de la JTable avec celles en paramètres */ public void majDonnees(ArrayList<Omag> nouvellesDonnees) { this.data = nouvellesDonnees; fireTableDataChanged(); } public int getColumnCount() { return nomColonnes.size(); } public int getRowCount() { if (data != null) return data.size(); else return 0; } /** * Retourne la valeur de la cellule */ public Object getValueAt(int row, int col) { if (row >= 0 && (row < this.data.size())) { switch (col) { case 0: return data.get(row).getDataRefProduit(); case 1: return data.get(row).getDataPJ(); case 2: return data.get(row).getDataPC(); case 3: return data.get(row).getDataLJ(); case 4: return data.get(row).getDataLC(); } } return null; } @Override public void setValueAt(Object value, int row, int col) { switch (col) { case 0 : data.get(row).setDataRefProduit(value); break; case 1: data.get(row).setDataPJ(value); break; case 2: data.get(row).setDataPC(value); break; case 3: data.get(row).setDataLJ(value); break; case 4: data.get(row).setDataLC(value); break; } fireTableDataChanged(); } /** * Retourne le nom du numéro de la colonne */ @Override public String getColumnName(int col) { return nomColonnes.get(col).toString(); } /** Retourne la Class des objets stockés dans la colonne c */ @Override public Class getColumnClass(int c) { if (data.size() == 0) return Object.class; else return getValueAt(0, c).getClass(); } /** Retourne true si la cellule a la ligne row dans la colonne col est editable */ @Override public boolean isCellEditable(int row, int col) { return false; } }
Ta classe TableRapport :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 class OmagTableRenderer implements TableCellRenderer { public OmagTableRenderer() { super(); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel l = new JLabel(); l.setText(value.toString()); return l; } }
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 class TableRapport { private Connection conn; private String date; private JScrollPane scroll=new JScrollPane(); private JTable tableau = null; private OmagTableModel tableModel = new OmagTableModel(); private OmagTableRenderer tableRenderer = new OmagTableRenderer(); public TableRapport(Connection conn,String date,String req){ //Les Composants JTable et JScrollPane tableau = new JTable(tableModel); for (int i = 0; i < tableModel.getColumnCount(); i++) { tableau.getColumnModel().getColumn(i).setCellRenderer(tableRenderer); } scroll.setViewportView(tableau); this.conn=conn; this.date=date; int i=1; Requete resultat = new Requete(conn,req,1); try { while(resultat.resultat.next()){ String RefProduit=resultat.resultat.getString(1); ChercheTable(RefProduit); } }catch(SQLException e){ e.printStackTrace(); } } public void ChercheTable(String refProduit){ String req="SELECT Production_J,PC,Livraison_J,LC FROM omag_valeur WHERE Date ='"+date+"' AND RefProduit ='"+RefProduit+"'"; Requete resultat = new Requete(conn,req,1); ArrayList<Omag> listeData = new ArrayList<Omag>(); try{ while(resultat.resultat.next()){ Omag o = new Omag(); o.setDataRefProduit(refProduit); o.setDataPJ(resultat.resultat.getDouble(1)); o.setDataPC(resultat.resultat.getDouble(2)); o.setDataLJ(resultat.resultat.getDouble(3)); o.setDataLC(resultat.resultat.getDouble(4)); listeData.add(o); } }catch(SQLException e){ e.printStackTrace(); } tableModel.majDonnees(listeData); } }
merci beaucoup DjGonk,
vous faite le maximum pour résoudre ce problème je vous prie de m'excusé,
je vais essayer ça et je vais vous répondre aprés une heure
merci encore
Ah! maintenant la boucle tourne bien aprés
l'utilisation de :
et l'utilisation de fireTableDataChanged() ; donnée par vous meme etCode:Object[][] dataTout = new Object[nbLigne][nbColonne];
je la trouvé aussi sur la doc sun , mais ça change rien ,je doit implementer
maintenant vos classe.
SALUT DjGonk
j'ai essayer toutes vos classes ,
elles sont bien adaptées à mon code mais le problèmes n'est pas encore
résolu, et seulement la dernière ligne qu'est affiché ,
merci beaucoup pour ton aide,je pense que vous avez fait plus de maximum
je vous prie de m'excusé.
bon je ne n'ai plus de solution, au passage je suis quand même surpris que seul la dernière ligne est affichée.
Est-ce que ta première boucle While dans TableRapport retourne plusieurs enregistrements?
salut mon cher DjGonk
oui ma requete et ma boucle retourne plusieurs enregistrements,
mais n'inquiète pas le problème est presque à résolu :
j'ai resérvé mon premier model et j'ai placé un bouton de changement de la
date dans la meme classe TRapport et ça me donne un bon résultat,
la table est mis à jour sans problème,
donc le problème n'été pas dans le model main dans l'instance de TRapport :
moi je change la date hors de TRapport puis je fait new TRapport(...),
et que je fait pour mes panels setVisible(true ou false);
merci beaucoup , votre aide est inoubliable.
merci beaucoup pour vous ,le problème est résolu