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 :

de ArrayList vers JTable


Sujet :

Composants Java

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut de ArrayList vers JTable
    bonjour ,
    je cherche comment récupérer des info depuis une ArrayList et les mettre en JTable lorsque je click sur un bouton ,
    j'ai 2 classe : Personne qui contient les info d'une personne et Stockage qui contient une ArrayList des personne :

    class_Personne :

    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
    public class class_personne {
       private String Nom;
       private String Prenom;
       private String Adresse ; 
       private Date DateNaissance ;
       public static int c =0 ;
        public class_personne(String Nom, String Prenom, String Adresse, Date DateNaissance) {
            this.Nom = Nom;
            this.Prenom = Prenom;
            this.Adresse = Adresse;
            this.DateNaissance = DateNaissance;
            c++;
        }
     
        public String getNom() {
            return Nom;
        }
     
        public void setNom(String Nom) {
            this.Nom = Nom;
        }
     
        public String getPrenom() {
            return Prenom;
        }
     
        public void setPrenom(String Prenom) {
            this.Prenom = Prenom;
        }
     
        public String getAdresse() {
            return Adresse;
        }
     
        public void setAdresse(String Adresse) {
            this.Adresse = Adresse;
        }
     
        public Date getDateNaissance() {
            return DateNaissance;
        }
     
        public void setDateNaissance(Date DateNaissance) {
            this.DateNaissance = DateNaissance;
        }
     
       public int getAge()
       { 
           Date d1 = new Date();  
    //        long a= d1.getTime()-this.DateNaissance.getTime();
            //int b=(int)a/(1000*60*60*24*30*12);
    //            return b;
          int c= d1.getYear()-DateNaissance.getYear();
          return c ;
       }
    }
    Stockage :

    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
     
    public class Stockage {
     
        public static ArrayList <class_personne> lp = new ArrayList<class_personne>();
        public static int c = 0;
       public  static boolean exist(String n)
        {
           boolean t=false;
           for (int i=0;i<lp.size();i++){
               if (lp.get(i).getNom().equals(n)){
                 t=true; 
                   System.out.println(" ça existe ");
               }
           }
           return t;
        }
       public static void ajouter(class_personne p)
        {
            lp.add(p);
            c++;
        }
       public  static void supprimer(String n)
        {
            for(int i=0 ; i <lp.size() ; i++)
            {
                  if(n.equals(lp.get(i).getNom()))
    //            if(lp.get(i).getNom().contains(s)) 
                {
                    lp.remove(i);
                  }
            }
        }
       public  static void rechercher(String s,class_personne pers)
        {
            for( int i = 0 ; i< lp.size() ; i++)
            {
              if(lp.get(i).getNom().equals(s))
    //            if(lp.get(i).getNom().contains(s)) 
                {
                     pers.setNom(lp.get(i).getNom());  
                     pers.setPrenom(lp.get(i).getPrenom());
                     pers.setAdresse(lp.get(i).getAdresse());
                     pers.setDateNaissance(lp.get(i).getDateNaissance());
     
                }
            }
            //------------------------------------
    //        Iterator i = lp.iterator();
    //        while(i.hasNext())
    //        {
    //            System.out.println(i.next()); 
    //            pers.setNom(lp.get(i).ge);
    //        }
        }
       public  static void modifier(String nom, class_personne pers)
        {
            for (int i = 0 ; i<lp.size(); i++)
            {
                if(lp.get(i).getNom().equals(nom))
                {
                    lp.get(i).setNom(pers.getNom()); 
                    lp.get(i).setPrenom(pers.getPrenom());
                    lp.get(i).setAdresse(pers.getAdresse());
                    lp.get(i).setDateNaissance(pers.getDateNaissance()); 
                }
     
            }
        }
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        private void btnconsultActionPerformed(java.awt.event.ActionEvent evt) {                                           
     
                         model.addRow(new Object [] {
                 // je ne sais comment récupérer de ma liste 
                        }); 
        }
    MERCII

  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 : 55
    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,

    Vu que la liste est une variable static public^^, tu peux toujours la récupérer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(classe_personne personne : Stockage.lp) {
     
         // Ensuite, il faut que tu construises le tableau pour chaque ligne
     
    }
    Tu pourrais, au lieu de faire ça, faire un modèle spécifique : c'est plus compliqué à faire quand on est débutant, mais c'est plus pratique à utiliser ensuite (pas besoin de boucle ou de convertir en tableau).

    Par ailleurs, je vais passer sur la liste static (parce que je ne sais pas dans quel cadre tu fais ton programme), mais pourquoi appeler une classe classe_personne ? Personne, c'est n'est plus simple et clair (en plus de respecter les conventions) ?

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut
    je ne peux pas les appeler en dehors de ma boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     for(class_personne pers : Stockage.lp) {
    
               String n=  pers.getNom(); 
               String p=  pers.getPrenom();
               String ad=  pers.getAdresse();
               Date  dn=  pers.getDateNaissance();  
               
            } 
            model.addRow(new Object [] { 
                //error
               n, p , ad , dn
               });

  4. #4
    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 : 55
    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
    Bah, oui, les 4 variables étant locales à la boucle, c'est normal. Il suffit de mettre la ligne avec le addRow dans la boucle, en toute logique, le but étant d'ajouter chaque personne de la liste. Sinon pourquoi faire une boucle ?

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut
    logique oui , mais ce n'est pas possible de mettre le addRow dans la boucle car à chaque fois que je vais cliquer sir le bouton la table se remplie et les champs se rajoutent après chaque clique ..

  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 : 55
    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
    Mais il sert à quoi ce bouton ? Il fait quoi au juste ? Je pensais que ça ouvrait une fenêtre avec une JTable affichant les personnes dans la liste. On pourrait tout à fait avoir une boucle qui remplit la table sur action sur bouton (un bouton "Rafraîchir" par exemple) : il suffit de vider son contenu avant à chaque fois.

  7. #7
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut
    ma JTable est mise dans un JDialog que j'affiche lorsque je clique sur le bouton et je pourrais parfaitement passer de mon JDialog à on Jframe là où ya le bouton, à ce moment si j re-clique sur le bouton ma JTable est remplie encore une fois avec les mêmes info

  8. #8
    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 : 55
    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
    Mais tu veux y afficher quoi dans cette JTable ? Peu importe où elle s'affiche. La seule chose qui est importante c'est ce que tu veux afficher dedans. Et ça je ne peux pas le deviner.
    Tu parlais d'informations de la liste, sans aucune précision supplémentaire : j'en ai déduit que tu voulais afficher toute la liste. Si c'est seulement 1 seul élément (bien qu'une JTable ne soit pas ce qu'il y a mieux adapté pour afficher un seul élément), il te faut donc l'index de l'élément dans la liste (ou un moyen de le retrouver). Et dans ce cas, tu fais tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int index = ... 
    classe_personne personne = Stockage.lp.get(index);
     
    String n=  pers.getNom(); 
    String p=  pers.getPrenom();
    String ad=  pers.getAdresse();
    Date  dn=  pers.getDateNaissance();  
            model.addRow(new Object [] { 
               n, p , ad , dn
               });
    Si tu dois afficher plusieurs éléments, il te faut une boucle (soit boucler sur l'ensemble des élements, soit boucleR sur une liste d'index, ou boucler sur l'ensemble et avoir un if avec une condtion de sélection, avoir une "sublist" en paramètre, etc.)...

    Et, par ailleurs, si la JTable est dans un JDialog, à priori, tu la crées à chaque nouvel affichage du JDialog, donc on s'en fout de ce qu'il y avait avant dedans, puisqu'il y avait forcément rien. Donc, quoique tu fasses, tu as juste à ajouter à ton modèle ce que tu veux afficher. Si le dialog n'est pas modal, alors tu peux effectivement modifier son contenu à chaque clic, sans fermer et réaffiche le dialog : dans ce cas, il te suffit de supprimer ce qu'il y avait avant (model.setRowCount(0)) d'ajouter les nouvelles données à afficher.

  9. #9
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut
    merci beaucoup , je cherchais seulement cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    model.setRowCount(0) ;
    
    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
     private void btnconsultActionPerformed(java.awt.event.ActionEvent evt) {                                           
                    jDialog1.show();
                    model.setRowCount(0) ;
            jlbl.setText(String.valueOf(Stockage.c));
     
            for(class_personne pers : Stockage.lp) {
    
               String n=  pers.getNom(); 
               String p=  pers.getPrenom();
               String ad=  pers.getAdresse();
               Date  dn=  pers.getDateNaissance();  
               
            model.addRow(new Object [] { 
                 n, p , ad , dn
               }); 
            } 
        }
    excusez moi pour le dérangement

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

Discussions similaires

  1. Probleme affichage arraylist dans jtable
    Par brew94 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 19/12/2008, 13h31
  2. ArrayList et JTable
    Par AnubisCorp dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 06/02/2008, 11h10
  3. Mettre des données d'une bdd vers JTable (via hibernate)
    Par tinwul dans le forum Composants
    Réponses: 6
    Dernier message: 03/01/2008, 23h16
  4. Arrayliste vers tableau
    Par ricault dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 04/06/2007, 11h51
  5. [SWING] Jtable vers JTable???
    Par rprom1 dans le forum Composants
    Réponses: 13
    Dernier message: 30/03/2006, 13h59

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