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 :

[JList] Ajout d'élément


Sujet :

Composants Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut [JList] Ajout d'élément
    Bonjour,
    J'aimerais savoir quelle fonction permet d'ajouter un elt de type String à une JList.
    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Tu dois passer par un DefaultListModel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DefaultListModel dlm = new DefaultListModel();
    JList jl = new JList(dlm);
    dlm.addElement("toto");
    et voila

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    OK Je vais essayer. Merci bcp

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    Ca a l'air de marcher.
    Juste une autre petite question : je veux ajouter cette DefaultListModel à un panel, et y insérer une barre de défilement sur la droite.
    Avant, avec la JList, on pouvait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     jPanel.add(new JScrollPane(jList), null)
    mais maintenant, avec le DefaultListModel ceci ne fonctionne plus.
    Comment puis je faire?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Déjà évite de mettre des contraintes d'insertion à null, ca peut avoir des comportement assez bizard.
    Utilise qqchose comme BorderLayout.CENTER.
    Sinon y a pas de raison que ca ne marche pas.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    Ca ne marche pas : maintenant je mets :
    jPanel.add(DefaultListModel, new XYConstraints(140, 36, 153, 153));

    Le compilateur me met que la méthode add ne prend pas de DefaultListModel

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    En fait, voila ce que je veux faire : je veux insérer des String uns à un dans une JList, et mettre ces elts de plusieurs couleurs, selon leur signification.

    Savez vous comment je peux faire?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Ca c normal, c la JList qu'il fo ajouter.
    Essai ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ]JScrollPane jsp = new JScrollPane(maList);
    jsp.setPreferedSize(100,100); //ou la taille que tu veux
     
    jPanel.setLayout(new BorderLayout());
    jPanel.add(jsp,BorderLayout.CENTER);
    Si ca ne marche toujorus pas, c'est bien etrange.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    J'ai du mal à suivre l'enchaînement de questions...

    En ce qui concerne le JScrollPane, un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    panel.setLayout(new BorderLayout());
    panel.add(new JScrollPane(myJList), BorderLayout.CENTER);
    suffit chez moi.

    Nicolas

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Pour peindre les éléments de ta liste, il faut passer par un ListCellRenderer.

    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
    class MyCellRenderer extends JLabel 
    implements ListCellRenderer {
     
    public MyCellRenderer() {
    setOpaque(true);
    }	
     
    	public Component getListCellRendererComponent(JList list, Object value,int index, boolean iss, boolean chf)
    	{
     
    /***/
    Mise en forme ici en focntion de value, index, ...
    Exemple :
     
    if(value.equals("toto") {
    setForeground(Color.BLUE);
    } else {
    setForeground(Color.RED);
    }
     
    /***/
    		return this;
    	}
    }
    une fois que tu as déclaré cette classe, tu n as plus qu à l'appliquer à ta liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maListe.setCellRenderer(new MyCellRenderer());

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    Super. Ca marche.
    Par contre, savez vous comment faire pour insérer des txtes de différentes couleurs? Pour l'instant j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    jList = new JList(DefaultListModel); 
    DefaultListModel.addElement("toto");
    jList.setForeground(Color.BLUE);
    DefaultListModel.addElement("tutu");
     
     
    JPanel.setLayout(xYLayout1);
    JPanel.add(jList,    new XYConstraints(140, 36, 153, 153));
    Le pb, c'est qu'au lieu de mettre une seule ligne en bleue, il me met tt le contenu de la liste en bleu. Savez vous comment ne mettre qu'une seule ligne de couleur?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Visiblement tu ne lis pas toutes les réponses que je te poste

    Je t tout expliqué juste au dessus pour colorier à ta guise les lignes de ta JList.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    Merci, je ne l'avais effectivement pas vu ;-)
    Il y a qque chose que je ne comprends pas tres bien :
    J'ai implémenté ma méthode getListCellRendererComponent.
    Mais je ne vois pas ou est ce que l'on fait appel à elle.
    On créé bien le cellRenderer grace à l'appel : jList.setCellRenderer(new MyCellRenderer()); . Ou est ce que l'on doit se servir de la fonction getListCellRendererComponent?
    Merci d'avance

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Tu n'as pas besoin de l'utiliser.
    C'est la JList qui va faire appelle à elle quand elle va effectuer son rendu.
    Une fois que tu as fait tout ca, c fini. Normalement tout devrai fonctionner correctement.

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

Discussions similaires

  1. [JList] Ajout d'un élément
    Par silouanej dans le forum Composants
    Réponses: 2
    Dernier message: 18/04/2008, 14h57
  2. [JList] ajouter un élément
    Par amazircool dans le forum Composants
    Réponses: 8
    Dernier message: 25/01/2008, 15h38
  3. Ajout d'élément à une JList
    Par miria.vhg dans le forum Composants
    Réponses: 4
    Dernier message: 06/02/2007, 15h29
  4. [Jlist][DefaultListModel] Listener sur ajout d'éléments
    Par Invité dans le forum Composants
    Réponses: 2
    Dernier message: 23/03/2006, 14h32
  5. Réponses: 6
    Dernier message: 10/07/2004, 12h19

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