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

 Java Discussion :

Problème utilisation jTable


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut Problème utilisation jTable
    Bonsoir à tous.

    J'essaye actuellement de crée une application qui affiche les résultat de requêtes SQL dans un Jtable. (Les paramètres sont saisie via l'interface graphique).

    Je suis parvenu à remplir des jTextFeild avec des requêtes retournant un seul résultat. Maintenant je voudrais que des lignes s'ajoute automatiquement au tableau selon le nombre de résultat de la requête, puis que les résultat aille dans le tableau. Cela fait quelques soirs que j'essaye maintenant de remplir mon jTable sans succès.

    J'ai tenté de suivre des tutoriel java ainsi que la Java doc, mais je n'arrive pas à comprendre comment utiliser un "TableModel", apparemment on est obliger de passer par ce dernier pour faire le lien entre les donnée de ma base et le jTable. Je trouve d'ailleurs ça étrange, car pour remplir l'une de mes combox avec ma BD, je n'ai pas eu besoin de passer par un "Model".



    Quelqu'un pourrait il m'aider s.v.p ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    il y a toujours un model derrière les compsant swing, mais il fournissent tous des facilité avec des modèles par défaut pour simplifier le travail.

    Dans ton cas, Il suffit de faire un appel au constructeur


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public JTable(Object[][] rowData,
                  Object[] columnNames)

    pour ne pas avoir à se soucier du modèle.

  3. #3
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    C'est tout à fait normal.

    Un combo n'est autre qu'une liste de valeur qui ont comme représentation une simple string (soit on affiche des strings, sont des object -> toString()), mais au final on représente graphiquement une liste de string.

    Avec un JTable, c'est plus délicat car ce composant nous permet d'afficher des instances composites (agrégation de plusieurs données) par ligne.

    Il faut donc décrire comment on va mapper les divers informations vers la GUI. Ce rôle est assuré par un Model. Ce model est également responsable de définir si une cellule est éditable ou pas par exemple.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    Merci pour vos réponse je comprend déjà un peu mieux.

    Par contre je ne vois pas où mettre le code que tu m'a montré tchize_.

    Autant quand je met le code de la java doc (Celui sur les TableModel) ça passe, autant celui du "constructeur" est directement souligné de rouge par mon IDE ><

  5. #5
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Bonjour,

    C'est au moment de l'instancation de ton JTable

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    Ça serait donc au moment ou le jTable est déclaré?

    Le problème c'est que ce projet est pour un TP dans le cadre de mon BTS IG. Or, on nous à toujours appris à faire les interface graphique grâce à un outils de netbeans (Il faut crée une nouvelle "JFreame" puis cliquer sur le bouton "Desing"). Ainsi, on à pas besoin de codé l'interface. Le code est généré automatiquement et on ne peu pas y touché. -_-'

  7. #7
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Citation Envoyé par Le Machgoule Voir le message
    Ça serait donc au moment ou le jTable est déclaré?

    Le problème c'est que ce projet est pour un TP dans le cadre de mon BTS IG. Or, on nous à toujours appris à faire les interface graphique grâce à un outils de netbeans (Il faut crée une nouvelle "JFreame" puis cliquer sur le bouton "Desing"). Ainsi, on à pas besoin de codé l'interface. Le code est généré automatiquement et on ne peu pas y touché. -_-'
    Il va donc falloir commencer à comprendre ce que tu fais

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    Bonjour à tous.

    Je me permet de "recycler" mon topic pour poser une nouvelle question sur les jTable.

    Je suis enfin parvenu à utilisé le jTable (Merci à tchize_ et Alain Defrance pour m'avoir expliquer)

    Pour géré mon jTable je me sert du "DefaultTableModel"

    Je suis de nouveau coincé car je n'arrive pas à supprimer des colonnes de mon jTable.

    Lorsque l'utilisateur clique sur afficher, mon code doit crée des colonne dans mon jTable. Certaine seront forcément crée, d'autre le seront si des checkBox sont cocher. Chaque fois que l'utilisateur clique sur afficher, toutes les colonnes dernièrement crée sont effacer pour laisser place au nouvelle colonnes.


    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
    88
    public class JFramePrincipale extends javax.swing.JFrame {
     
    int nbCol = -1; //Variable globale qui contient l'indice de la dernnière colone créee
    int premier = 1; //Est a 1 si il n'y a aucune colone dans le Jtable
    String nomCol = ""; //Variable qui changera selon le nom d'une nouvelle colone
    DefaultTableModel modTab = new DefaultTableModel();
     
    public JFramePrincipale() {
     
    initComponents(); //La fonction de NetBeans qui génère automatiquement les élément de la JFrame choisie via une interface graphique (Crée entre autre le jTable "jTableResu")
    this.jTableResu.setModel(modTab);
     
    }
     
    public void CreeColone() {
     
     
            //Vérifie quel jCheckBox sont cochée
            boolean cocherSin = jCheckBoxNbSin.isSelected();
            boolean cocherCCS = jCheckBoxTotalCoutCin.isSelected();
            boolean cocherMTC = jCheckBoxTotalCot.isSelected();
     
           //Premier est initialiser à 1. Il n'y a pas de colone dans le jTable lors du lancement du programme. Donc pas besoin de passer par supprCol pour supprimer des colones
           if (premier != 1) {
     
               supprCol ();
     
           }
     
            //Les colones qui suivent seront crée quelque soit la requête sql choisie via l'interface graphique. On incrémente nbCol à chaque fois pour savoir quel est l'indice de la dernière colone créee.
            nomCol = "Code";
            modTab.addColumn(nomCol);
            nbCol++;
            nomCol = "Modele";
            modTab.addColumn(nomCol);
            nbCol++;
            nomCol = "Marque";
            modTab.addColumn(nomCol);
            nbCol++;
     
             //Selon si les checkBox au dessus son cocher ou pas, on crée de nouvelle colones
            if (cocherSin) {
     
                nomCol = "Nombre de sinistres";
                modTab.addColumn(nomCol);
                nbCol++;
            }
     
            if (cocherCCS) {
     
                nomCol = "Coût total sinistres";
                modTab.addColumn(nomCol);
                nbCol++;
            }
     
     
            if (cocherMTC) {
                nomCol = "Motant total cotisations";
                modTab.addColumn(nomCol);
                nbCol++;
            }
     
            //Des colone on été crée, premier passe à 0. La prochaine fois qu'on cliquera sur afficher, CreeColone fera appel a supprCol
            premier = 0;
     
     
        }
     
    public void supprCol () {
     
           //Tant que l'indice de la dernnière colone du jTable n'est pas à -1
           while (nbCol != -1) {
     
    //On supprime la colone en indiquant sont indice "nbCol". "nbCol" est décrémenter pour que toute les colones soient supprimer petit à petit.
             jTableResu.removeColumn(jTableResu.getColumnModel().getColumn(nbCol));
                nbCol--;
     
            }
     
     
      private void jButtonAfficherActionPerformed(java.awt.event.ActionEvent evt) {                                                
     
           CreeColone(); //On fait appel à la fonction "CreeColone" lorsque l'utilisateur clique sur "Afficher"
     
     
     
        }
    }

    Les colonnes sont bien crée, mais la fonction supprCol n'efface aucune colonne. <<

    Quelqu'un pourrait il m'aider ?

    Merci d'avance.

Discussions similaires

  1. Problème utilisation DLL
    Par Tub-95 dans le forum MFC
    Réponses: 4
    Dernier message: 02/11/2005, 12h00
  2. [Tomcat][Spring] Problème utilisation mémoire
    Par Wutintin dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/09/2005, 14h57
  3. [JSTL] [EL] Problème utilisation <c:out>
    Par XavierL dans le forum Taglibs
    Réponses: 7
    Dernier message: 14/08/2005, 20h12
  4. (Problème) Utilisation de l'API mySQL [Delphi 2005 Perso]
    Par will-scs dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/08/2005, 18h26
  5. [JAR]Problème utilisation manifest et jar
    Par doudine dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 07/01/2005, 10h21

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