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 :

ajouter des lignes dynamiquement dans un JTable


Sujet :

Composants Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Points : 64
    Points
    64
    Par défaut ajouter des lignes dynamiquement dans un JTable
    Bonsoir,

    J'utilise un JTable. Un constructeur du JTable permet de créer l'élément JTable a partir d'un tableau de données et d'un tableau d'en-tête.

    J'arrive a créer le JTable mais uniquement lorsque le tableau de donnée est fixé au départ. Or j'ai besoin d'ajouter des lignes/entrées au fur et a mesure d'un processus après la création du JTable de sorte a ce que l'utilisateur puisse observer l'état d'avancement du processus (et des lignes qui s'ajoutent au fur et a mesure). Or, après avoir lu attentivement la documentation Oracle sur ce composant JTable je n'ai trouvé aucune méthode qui me permette d'ajouter des lignes dynamiquement. Comment faire ? http://docs.oracle.com/javase/7/docs...ng/JTable.html


    Par ailleurs, j'ai ca mais ca ne va pas, j'ai une exception a la première ligne data[i][0] = "Kathy";. Comment corriger ?

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Object[][] data;
                        for(int i=0; i<250; i++) {
                            data[i][0] = "Kathy";
                            data[i][1] = "Smith";
                            data[i][2] = "Snowboarding";
                            data[i][3] = new Integer(5);
                            data[i][4] = new Boolean(false);
                            i++;
                        }
     
                        table = new JTable(data, header);

    Merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tout d'abord, il faut instancier ton tableau, par un new Object[250][5], pour pouvoir y mettre quelquechose, sinon tu obtiens, une NullPointerException.

    Ensuite, pour ajouter dynamiquement des lignes dans la JTable, passes par le modèle (voir un exemple sur le tutoriel).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Points : 64
    Points
    64
    Par défaut
    Oui Merci pour le tableau 250x5, j'avais resolut hier soir.

    En revanche par le modle dont tu parles, je ne comprends pas bien (j'avais lu cette page avant de poser ma question). Ce que je comprends c'est qu'il va a falloir autant de model que de tableau de donné puisque je fait des tableau un nombre de colonne diffèrent a chaque fois (je li dans des fichier le nombre de colonne et j'interroge le "réseaux" pour remplir les lignes, et j'ai a chaque fois des nombre de colonne différents).

  4. #4
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Points : 64
    Points
    64
    Par défaut
    Là je suis complètement coincé.

    Je lis dans des fichiers de paramètres au format texte le nom (label) des colonnes ainsi que leur nombres puis je fais un processus (j'interroge le réseaux) pour compléter les lignes. L'ennui est que - si j'ai bien compris - pour chaque fichier je suis obligé de faire un modèle de données et autant de classe de données (comme la classe "ami" dans le lien que tu proposes au dessus) par fichier. Ou plus exactement je dois faire un modèle pour chaque "nombre de colonne: si dans mes fichier de paramètres j'ai 3 fichiers avec 5 colonne, 3 fichiers avec 6 et 3 avec 7, etc. il faut que je fasse autant de modèle ?

    Evidement, je ne souhaite pas exploiter toutes les possibilité du JTable, je souhaite juste afficher des données, rien de plus. Mais il faut que cela soit assez souple et la solution au dessus n'est pas du tout acceptable. Il y a t-il un autre composant qui pourrait juste afficher en liste ou en table ? Ou une autre méthode avec le JTable pour paramétrer le nombre de colonne plus simplement et plus efficacement ?

  5. #5
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Points : 64
    Points
    64
    Par défaut
    Alors, ma stratégie est de démarrer avec un modele de JTable vide/default et d'ajouter autant de colonne que de besoin.

    Avec ca:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    DefaultTableModel model = new DefaultTableModel(data,columnNames);
     
    JTable jTable = new JTable(model);
     
    int row, column;
    Object aValue;
    model.setValueAt(aValue,row,column);
     
    Object columnName;
    Object[] columnData;
    model.addColumn(columnName, columnData);
     
    Object[] rowData;
    model.addRow(rowData);

    Ca devrait être bon.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Non, il n'y a besoin que d'un seul modèle de données (un DefaultTableModel surffirait) pour une JTable. Ensuite, la classe Ami dans l'exemple permet de gérer les données d'une ligne de façon plus "objet", mais si tu veux le faire plus simplement, utilise directement les méthodes addRow(Object[]) ou addRow(Vector)...

    D'un côté (avec les variables en variables d'instances de ta classe d'UI) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    model = new DefaultTableModel(new String[]{"colonne 1","colonne 2", "colonne 3");
    table = new JTable(mode);
    ...
    et de l'autre, pour l'ajout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    model.addRow( new Object[]{data1, data2, data3} );
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jolt0x Voir le message
    Alors, ma stratégie est de démarrer avec un modele de JTable vide/default et d'ajouter autant de colonne que de besoin.

    ...
    Voilà, c'était l'idée...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [SP-2007] Ajout des lien dynamique dans une liste déroulante
    Par nouvintou dans le forum SharePoint
    Réponses: 2
    Dernier message: 15/03/2011, 11h31
  2. Réponses: 11
    Dernier message: 10/11/2010, 08h33
  3. [SP-2007] Ajouter des champs dynamiquement dans une cutom list
    Par takuan64 dans le forum SharePoint
    Réponses: 8
    Dernier message: 26/07/2010, 14h12
  4. Ajouter des évènements dynamiquement dans un pop-up
    Par _jey_ dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 06/07/2009, 17h02
  5. Ajout de ligne dynamique dans un tableau (Incompatible IE)
    Par seb34 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 26/05/2006, 11h03

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