Bonjour,
Je viens de suivre un petit exemple pour creer un model de données.
http://www.developpez.org/club/bkost...ing/table.html
A la différence que je charge mes données depuis un resultset.
Lorsque je lance l'affichage les colonnes s'affichent bien mais pas les données.
Je vous montre le code :
le controleur avec le chargement des vecteurs qui renvoi un model de type DataFileTableModel
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 import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.Vector; import javax.swing.JOptionPane; import utilitaires.DataFileTableModel; import com.mysql.jdbc.ResultSet; import da.ClientsDA; import dto.Client; import ecrans.EcranClients; public class CtrlClients { public CtrlClients() { super(); } /** * Recuperation de la liste globale des clients * @return jTable */ public DataFileTableModel modelClientsGlobale(){ DataFileTableModel model = null; ResultSet rs = null; // recuperation du resultset construit dans clientDA rs = (ResultSet) new ClientsDA().listeClients(); // Declaration du ResultSetMetaData ResultSetMetaData md = null; try { // Construction du ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData(); // Récuperation du nombre de colonnes int col = md.getColumnCount(); // Instanciation des deux Vectors Vector nomColonnes = new Vector(); Vector donnees = new Vector(); // Remplissage du Vector des nom de colonnes for (int i = 1; i <= col; i++) { nomColonnes.addElement(md.getColumnName(i)); } // Remplissage du vector des Données while (rs.next()) { Vector row = new Vector(); for (int i = 1; i <= col; i++){ row.addElement(rs.getObject(i)); } donnees.addElement(row); } model = new DataFileTableModel(donnees,nomColonnes); //jTable.createDefaultColumnsFromModel(); // Construction de la Jtable //jTable = new JTable(data,nomColonnes); } catch (SQLException e) { System.out.println("Erreur SQL : " + e); } catch (Exception e){ System.out.println("Erreur : " + e); } // On retourne la jTable return model; }
La classe tableModel
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
84
85
86
87 import javax.swing.*; import javax.swing.table.*; import java.io.*; import java.util.*; public class DataFileTableModel extends AbstractTableModel { protected Vector donnees; //données protected Vector nomColonnes ; //noms de colonnes protected String datafile; //nom du fichier de données /** * Un Constructeur * */ public DataFileTableModel() { } /** * Un Constructeur * */ public DataFileTableModel(Vector data, Vector columnNames) { donnees = data; nomColonnes = columnNames; } /** * Nombre de colonnes * */ public int getColumnCount() { return nomColonnes.size(); } /** * Nombre de lignes * */ public int getRowCount() { return donnees.size()/getColumnCount(); } /** * Noms des colonnes * */ public String getColumnName(int columnIndex) { String colName=""; if (columnIndex<=getColumnCount()) colName=(String)nomColonnes.elementAt(columnIndex); return colName; } /** * Types de contenu d'une colonne * */ public Class getColumnClass(int columnIndex){ return String.class; } /** * Possibilite d'édition des données * */ public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } /** * Contenu d'une cellule * */ public Object getValueAt(int rowIndex, int columnIndex) { return (String)donnees.elementAt( (rowIndex*getColumnCount())+columnIndex); } /** * Changement du contenue d'une cellule * */ public void setValueAt(Object aValue, int rowIndex, int columnIndex) { } }
Et la methode appelée pour l'affichage de la Jtable
En debug les vectors se remplissent bien cependant les données ne s'affichent pas, je n'ai que les colonnes ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private JTable getJTableClients() { if (jTableClients == null) { DataFileTableModel model = new CtrlClients().modelClientsGlobale(); jTableClients = new JTable(); jTableClients.setModel(model); } return jTableClients; }
Merci a tous
Partager