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] Problème avec le modèle


Sujet :

Composants Java

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Points : 122
    Points
    122
    Par défaut [JTable] Problème avec le modèle
    Bonjour,

    j'ai développé une sous-classe de AbstractTableModel qui permet de récupérer les données depuis une base de données:

    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
    import javax.swing.table.AbstractTableModel;
    import java.sql.SQLException;
     
    public class TableModelBDD extends AbstractTableModel{
        private ConnectionJDBC conn;
        private String[] columnNames={"Id","Date","Ordre","Type","Operation","Montant","Categorie"};
        Object [][] dataTable;
     
        /** Creates a new instance of TableModelBDD */
        public TableModelBDD(ConnectionJDBC connection,String query) {
        //public TableModelBDD() {
     
            conn=connection;
     
            try {
                dataTable=connection.executeQuery(query);
            }
            catch (SQLException errSQL){
                System.out.println("Erreur de l'execution de la requete"+errSQL);
            }
        }
     
        public Object getValueAt(int row,int col){
            return dataTable[row][col];
        }
     
        public int getRowCount(){
            return dataTable[0].length;
        }
     
        public int getColumnCount(){
            return columnNames.length;
        }
     
        public boolean isCellEditable(int row,int col){
            return false;
        }
     
        public Class getColumnClass(int col){
            return getValueAt(0,col).getClass();
        }
     
        public String getColumnName(int col) {
                return columnNames[col];
        }
    }
    Pour info la variable columNames sera un paramètre de la classe constructeur. Mais là n'est pas l'important.

    Dans une autre classe, j'instancie ma sous-classe plusieurs fois:

    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
    String query;
            JTable[] table=new JTable[listOfCategorie.length];
            TableModelBDD[] modelBDD=new TableModelBDD[listOfCategorie.length];
            JScrollPane[] scrollPane=new JScrollPane[listOfCategorie.length];
     
            int j;
            for (int i=0;i<listOfCategorie.length;i++) {
                j=i+1;
                //query="select * from transac where categoId="+j;
                query="select * from transac where categoId="+j;
                modelBDD[i]=new TableModelBDD(connectToCompteDB,query);
                table[i]=new JTable(modelBDD[i]);
                scrollPane[i]=new JScrollPane(table[i]);
                //System.out.println(listOfCategorie[i][0].toString());
                navigation.addTab(listOfCategorie[i][0].toString(),scrollPane[i]);
            }
    J'aimerais savoir pourquoi chaque nouvel instance table[i] doivent comporter le même nombre de ligne sous peine de me renvoyer une erreur.

    Je suppose que c'est certainement puisque la méthode getRowCount retourne le nombre de lignes et que cette valeur est fixé par la première instance mais moi je crée plusieurs instances donc les valeurs devraient être propre à chaque instance, non ?

    Merci.
    ++

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Je crois qu'il y a une petite erreur dans ton model, et ca pourrait causer ton probleme.
    getRowCount te renvoie le nombre de colonne et non le nombre de ligne. Tu devrais plutot faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public int getRowCount(){
            return dataTable.length;
        }

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Points : 122
    Points
    122
    Par défaut
    Bien vu Mister barbu0055

    Et bien dans ce cas, un grand merci, oh bah là je comprends déjà mieux, et pas de problème pour la création de mes tables.

    ++

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/05/2008, 16h17
  2. [JTable] Problèmes avec les lignes
    Par bonui13 dans le forum Composants
    Réponses: 8
    Dernier message: 28/03/2007, 13h59
  3. [JTable] Problème avec getValueAt
    Par flames dans le forum Composants
    Réponses: 2
    Dernier message: 24/05/2006, 22h27
  4. [JTable]Affichage avec un modèle dynamique impossible
    Par leminipouce dans le forum Composants
    Réponses: 4
    Dernier message: 07/02/2006, 19h42
  5. [JTable] Problème avec la couleur de fond
    Par ellocin dans le forum Composants
    Réponses: 5
    Dernier message: 13/09/2005, 23h07

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