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


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;
	}
En debug les vectors se remplissent bien cependant les données ne s'affichent pas, je n'ai que les colonnes ...

Merci a tous