Jlist ° JLabel -> Texte [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
5 juin 2009
-
Messages postés
18
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
5 juin 2009
-
Bonjour,
Mon problème est le suivant, je passe des JLabel à une JList dans l'espoir qu'il m'affiche un icon et le texte associé, mais le résultat est tout autre il m'affiche tout les paramètres des JLabel et donc du texte.
J'ai cherché sur le net mais je trouve pas de réponse.
Merci de votre aide.
A voir également:

3 réponses

Messages postés
5361
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 mars 2021
108
Salut,

il faut modifier le ListCellRenderer de ta JList pour faire ce que tu veux
exemple de ListCellRenderer :

import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JLabel;
import javax.swing.JList;

public class LabelListCellRenderer extends DefaultListCellRenderer {

    private static final long                serialVersionUID    = 4019004513369374447L;
   
    public LabelListCellRenderer(){
        super();
    }
   
    public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean hasFocus) {
       
        if(JLabel.class.isInstance(value))
            return (JLabel)value;
       
        return super.getListCellRendererComponent(list, value,
                index, isSelected, hasFocus);
    }
   
}

la classe de Test :
import java.net.URL;

import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;

public class Test extends JFrame {

    public Test() {
        setDefaultCloseOperation(3);
        setSize(800, 600);
        setLocationRelativeTo(null);
       
        JList list = new JList();
        list.setCellRenderer(new LabelListCellRenderer());
        DefaultListModel model = new DefaultListModel();
       
        ImageIcon icon = null;
        try {
            URL url = new URL("http://www.javafr.com/g/v9logo/v2/logojava.png");
            icon = new ImageIcon(url);
            icon.getImage();
        } catch(Exception e) {
            e.printStackTrace();
        }
           
        for(int i = 1; i <= 10; ++i) {
            JLabel lbl = new JLabel();
            lbl.setIcon(icon);
               
            lbl.setText("Label " + i);
            model.addElement(lbl);
        }
        list.setModel(model);
       
        setContentPane(new JScrollPane(list));
    }
   
    public static void main(String[] args) {
        new Test().setVisible(true);
    }
}

après pour ce qui est des bordures et autre quand tu sélectionnes, c'est à toi de faire (dans le LabelListCellRenderer)...

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
18
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
5 juin 2009

Merci pour ta réponse.
Je crois avoir détecter la ligne qu'il me manquait : list.setCellRenderer(new LabelListCellRenderer());
Je te dirai si j'ai résolu mon problème demain.
Merci.
Messages postés
18
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
5 juin 2009

Merci, çà marche :)