IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTable et Model] Pas d'affichage de données


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut [JTable et Model] Pas d'affichage de données
    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

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Par défaut
    Salut,
    as tu vérifié que tu passais bien dans la méthode getValueAt de ton model ?
    si oui vérifie ce qu'elle renvoi, sinon c'est bizarre;..

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut
    Effectivement ca ne passe pas dedans, mais pour les colonnes non plus, il ne se sert pas de ces methodes et pourtant elles s'affichent... je vais continuer a fouiller d'autres docs car c'est pas encore acquis cette histoire de table model

  4. #4
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Par défaut
    Essaye un jTableClient.repaint() ou jtableCLient.revalidate().

    Ce que tu as fais m'a l'air bon a première vue.

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Peux-tu nous montrer où tu appelles ta méthode getJTableClients(), s'il te plaît ?
    A tout hasard, aurais-tu modifier le renderer de ta JTable ?

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut
    Voila l'appel
    Tiens d'ailleurs je connais pas ce setViewportView ca c'est generer auto avec eclipse ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private JScrollPane getJScrollPaneClients() {
    		if (jScrollPaneClients == null) {
    			jScrollPaneClients = new JScrollPane();
    			jScrollPaneClients.setBounds(new java.awt.Rectangle(20,40,600,250));
    			jScrollPaneClients.setViewportView(getJTableClients());
    		}
    		return jScrollPaneClients;
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ORA-1652 : pas d'affichage des données ?
    Par rimas2009 dans le forum Sql Developer
    Réponses: 1
    Dernier message: 22/06/2010, 17h18
  2. Pas d'affichage des données d'un formulaire
    Par Fresal dans le forum IHM
    Réponses: 4
    Dernier message: 17/06/2008, 21h53
  3. [JTable] pas d'affichage du header
    Par I o dans le forum Composants
    Réponses: 2
    Dernier message: 27/04/2005, 13h42
  4. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo