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 :

Ajout d'élément à une JList


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut Ajout d'élément à une JList
    Bonjour!

    L'interface graphique de mon programme présente une JList (javax.swing.JList)

    En me basant sur les exemples trouvés par-ci par-là sur le net, le code suivant me semble cohérent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            Vector liste = new Vector();
     
            // arrayPlante est un Array d'objets Plante
            //la JList est nommée jlistPlantes
     
            for (int i = 0; i < arrayPlante.length; i++)  {
                liste.addElement(arrayPlante[i]);
                jlistPlantes.setListData(liste);
            }
            jlistPlantes.updateUI(); // comme rien ne se produisant en exécutant le code, j'ai ajouté updateUI espérant résoudre le cas
    Le compilateur ne se plaint d'aucune erreur de code, celà dit, ma JList reste toujours vide, malgré que le Vecteur liste contiennent au moins un objet.

    Merci pour votre temps ...

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i = 0; i < arrayPlante.length; i++)  {
                liste.addElement(arrayPlante[i]);           
            }
    jlistPlantes.setListData(liste);
    tu donnes la liste une fois qu'elle est remplie.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Juste une remarque sur ton code : l'appel de setListData() devrait être uniquement après la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            Vector liste = new Vector();
     
            // arrayPlante est un Array d'objets Plante
            //la JList est nommée jlistPlantes
     
            for (int i = 0; i < arrayPlante.length; i++)  {
                liste.addElement(arrayPlante[i]);
     
            }
            jlistPlantes.setListData(liste);
    De plus tu devrais utiliser setListData(Object[]), c'est à dire tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            jlistPlantes.setListData(arrayPlante);
    Sinon, est-ce que tu es sûr de ne pas modifier ton vecteur par la suite ?

    a++

  4. #4
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut
    Eclesia, Adiguba ... suis désolée le problème était entre la chaise et l'écran : J'ai été distraite et sans utiliser mon bouton "importer plantes", la liste avait peu de chances d'être peuplée ...

    Effectivement, mettre directement l'Array a fonctionné n_n

    J'en profite car à présent, la petite boite affiche bien des objets, mais la façon de déterminer quelle variable (par exemple Plante.nomPlante qui est un String) sert d'affichage m'échappe ... pourriez vous m'éclairer?

    merci ^_^

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par miria.vhg
    J'en profite car à présent, la petite boite affiche bien des objets, mais la façon de déterminer quelle variable (par exemple Plante.nomPlante qui est un String) sert d'affichage m'échappe ... pourriez vous m'éclairer?
    Il y a deux solutions :

    La solution bête et rapide : redéfinir la méthode toString() de ta classe Plante, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String toString() {
        return Plante.nomPlante;
    }

    La seconde solution est d'utiliser son propre ListCellRenderer, qui permet de définir tout soit même (ajouter une icone, couleurs, etc...). Le mieux étant d'hériter de DefaultListCellRenderer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		// A faire une fois lors de la création de la liste :
    		list.setCellRenderer(new DefaultListCellRenderer() {
    			@Override
    			public Component getListCellRendererComponent(JList list,	Object value, int index, boolean isSelected, boolean cellHasFocus) {
     
    				Plante plante = (Plante)value;
    				String str = plante.getNomPlante();
     
    				// et on appelle la méthode parente qui gère tout :
    				return super.getListCellRendererComponent(list, str, index, isSelected, cellHasFocus);
    			}
    		});

    a++

Discussions similaires

  1. Ajouter un élément à une liste
    Par izulah dans le forum Prolog
    Réponses: 5
    Dernier message: 17/03/2009, 08h57
  2. [VB.Net 2005]Ajouter un élément à une listbox
    Par DonF dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/09/2006, 13h07
  3. comment ajouter un element à une JList
    Par belassel_z dans le forum Composants
    Réponses: 1
    Dernier message: 20/05/2006, 12h13
  4. Comment ajouter un élément à une TListBox
    Par hijodelanoche dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/11/2005, 17h05
  5. Ajout d'élément à une page
    Par Ditch dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/03/2005, 12h45

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