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

Collection et Stream Java Discussion :

ArrayList et JList


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé Avatar de soujava
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Par défaut ArrayList et JList
    slt
    comment afficher les elements d'un ArrayList sur une JList puis choisir quelque champs de cette dernière et les afficher sur une autre JList.
    merci d'avance

  2. #2
    Membre expérimenté
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Par défaut
    Bonjour,
    Pour répondre à ta question cela dépends de ce que tu souhaites excatement faire. Mais prenons le cas le plus simple. Si ton cas est plus compliqué, expose le plus précisément.
    Je suppose ici que tu as remplit une java.util.ArrayList que l'on nomera pour la la suite listSource. Je supose que tu souhaites transférer telquels les éléments de listSource vers une javax.swing.JList. Pour cela il te faut d'abord créer un javax.swing.DefaultListModel que tu rempliras, puis que tu donneras as ta javax.swing.JList.
    Ce qui peut donner par exemple :
    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
     
    //......
     
    //Création du model 
    DefaultListModel listModel = new DefaultListModel();
     
    //Remplir le model
    int size = listSource.size();
    for(int index=0; index<size; index++)
    {
         listModel.addElement(listSource.get(index));
    }
     
    //Donné le model à la liste
    listToFill.setModel(listModel);
    Voila ta liste de remplit.

    Ensuite pour l'autre partie je vais te donner quelques pistes a toi de creuser en fouillant sur la FAQ tu devrais t'en sortir. Si tu éprouves des difficultées n'hésites pas à nous poser des questions précises.

    1) Créer un modèle pour la liste cible (voir ci-dessus). C'est ce modèle que tu rempliras. N'oublies pas de donné ce nouveau modèle à ta liste cible.
    2) Récupérer la sélection actuelle dans la liste source grâce à la méthode getSelectedValues()
    3) Copier la sélection dans le modèle de la cible (inspire toi du code ci-dessus)

    A bientôt,
    JHelp

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    Salut,

    Pour la création de la JList à partir de d'un ArrayList, il y a plus rapide.

    Si tu initialise ta JList alors que l'ArrayList existe déjà tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JList laListe = new JList(monArrayList.toArray());
    Si la JList existe déjà et que tu veux changer la liste tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    laListe.setListData(monArrayList.toArray());
    A++

  4. #4
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 30
    Par défaut
    Bonjour,

    Désolé de remonter un vieux post mais mon problème correspond excactement !!!

    En fait j'ai utilisé la technique de extraman1 pour afficher le contenu d'une collection dans une JListe!

    Le problème :

    http://img189.imageshack.us/my.php?i...airescreen.jpg

    Sur ma Jlist les informations sont cryptées apperement!
    Comment ça se fait ? Comment faire apparaître le nom, prénom etc... et non Contact@1a0c10f ??

    Mon code d'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ArrayList<contact> lesContacts = new ArrayList<contact>();   
    private JList liste = new JList(lesContacts.toArray());
     
    //Quand j'appuie sur le bouton valider :
    liste.setListData(lesContacts.toArray());
    Merci d'avance à celui ou celle qui m'aidera !!

  5. #5
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Ca ressemble vachement à une description + adresse de l'objet ça...

    Essaye d'implémenter un toString dans ta classe Contact.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Par défaut
    les Contacts.toArray() ne renvoie pas des strings mais des objets. Ainsi tu n'obtient pas le nom du contact. Il faut que la liste de data que tu envoie à la JList soit composée de string. Comme le dit Antoine, implémente une méthode toString dans ta classe Contact.

  7. #7
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 30
    Par défaut
    Déjà merci à Antoine_935, HozakaN et chepac du chat pour les reponses rapide!

    J'ai créé ma méthode .toString() dans ma classe contact.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String toString() { 
    return "Nom: " + donneNom() + " Prenom:" + donnePrenom() + " Téléphone:" + donneTel() + " Email:" + donneEmail();                                           
    }
    Cependant j'ai un petit problème pour l'utiliser.

    J'envoi les objets de cette manière dans ma collection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unContact.changeNom(tf1.getText());
    unContact.changePrenom(tf2.getText());
    unContact.changeTel(tf3.getText());
    unContact.changeEmail(tf4.getText());
    C'est ici que je dois appliquer mon toString() ?
    Je débute, c'est possible que ma question vous paraisse stupide.

  8. #8
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 30
    Par défaut
    EN FAIT çA MARCHE, j'avais pas testé! le fait de créer la méthode suffit apparement !
    Je suis étonné!

    En tout cas merci à vous ; )

  9. #9
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 17
    Par défaut
    Salut,

    Ne sois pas étonné, c'est juste que le composant JList (et pas que lui d'ailleurs) est codé de telle manière à appeler automatiquement la méthode toString() pour afficher les données de son modèle !

Discussions similaires

  1. Remplir JList avec ArrayList
    Par totot dans le forum Composants
    Réponses: 1
    Dernier message: 30/04/2015, 20h01
  2. JList vers ArrayList
    Par MarieKisSlaJoue dans le forum Débuter
    Réponses: 2
    Dernier message: 11/06/2014, 14h05
  3. drag and drop ArrayList JList
    Par tanguy.L dans le forum Composants
    Réponses: 0
    Dernier message: 08/04/2010, 20h06
  4. probleme ArrayList et JList
    Par offspring dans le forum Composants
    Réponses: 3
    Dernier message: 23/08/2007, 00h13
  5. JList en line wrapping
    Par dreydrey dans le forum Composants
    Réponses: 3
    Dernier message: 16/12/2003, 11h22

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