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 :

inserer une image et du texte dans une Jlist


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 41
    Points : 38
    Points
    38
    Par défaut inserer une image et du texte dans une Jlist
    Bonsoir,

    Je n'arrive pas a trouver le moyen d'inserer une image et du texte dans ma Jlist j'ai essayer comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    final DefaultListModel model = new DefaultListModel();
     
    JLabel lab = new JLabel("mon element",new ImageIcon(urldelimage),JLabel.HORIZONTAL);
     
    model.addElement(lab);
     
    final JList List = new JList(model);
     
    ...
    Deplus j'aimerai avoir un affichage de mon element de ma liste de cette maniere <img> + "text"

    mais cela ne marche pas
    Avez vous une idee ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 128
    Points : 151
    Points
    151
    Par défaut
    Il faut que tu t'orientes vers un ListCellRenderer pour mettre dans une liste quelque chose de plus complexe qu'un simple texte. En effet, si tu places tes composants tels quels dans le model, tu verras à l'affichage le résultat d'un toString() sur le composant (ce qui, dans le cas d'un JLabel, n'est pas particulièrement parlant....)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    J'ai regardé dans la javadoc sa a pas l'air evident a manipuler si tu peux me donner un exemple sa serait cool

    Merci pour ta reponse

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 128
    Points : 151
    Points
    151
    Par défaut
    Effectivement, ce n'est pas évident, surtout la première fois
    Voilà comment tu pourrais procéder (à améliorer, en fonction de tes besoins...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //Tout d'abord il faut remplir ta liste avec "quelque chose".
    //L'idéal serait des int, mais comme ces des Object qui sont attendus à l'autre bout,
    //on peut utiliser les integer
    DefaultListModel model = new DefaultListModel();
    for (int i=0; i<nbElements; i++)
    {
        model.addElement(new Integer(i));
    }
    JList maListe = new JList(model);
    maListe.setCellRenderer(new MonRenderer());
    Une fois que c'est fait, il faut implementer le renderer proprement dit :
    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
    class MonRenderer extends JLabel implements ListCellRenderer
    {
        public Component getListCellRendererComponent (JList list, Object value, int index, boolean selected, boolean cellHasFocus)
        {
            //recuperer l'indice
            int ind = ((Integer)value).intValue();
            //mettre les backgrouds par défaut
            if (isSelected)
            {
                setBackground(list.getSelectionBackground());
                setForeground(list.getSelectionForeground());
            }
            else
            {
                setBackground(list.getBackground());
                setForeground(list.getForeground());
            }
            setText("mon texte");
            setIcon(new ImageIcon("monIcone.jpg");
            return this;
        }
    }
    Voilà, la métode getListCellRendererComponent renvoie en fait le component qui sera affiché dans la liste. Tu peux jouer sur cet objet en fonction bien sur de son indice dans la liste, mais aussi selon qu'il est sélectionné ou qu'il ait le focus... Pour plus d'infos : tutorial de Sun

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    Je test ton bout de code .

    Mille merci.

    A plus tard

Discussions similaires

  1. Centrer une image et un texte dans une cellule
    Par gaya102 dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 04/09/2009, 17h09
  2. Réponses: 11
    Dernier message: 08/11/2007, 19h01
  3. inserer un texte dans une image
    Par hayate12 dans le forum C++
    Réponses: 11
    Dernier message: 22/03/2007, 13h21
  4. Centrer une image et un texte dans un div
    Par flexx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 17/01/2006, 20h11
  5. Zone de texte dans une image
    Par sanna dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 18/03/2005, 22h15

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