Jlist ° JLabel -> Texte

Résolu
Kickaha59 Messages postés 18 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 5 juin 2009 - 4 déc. 2008 à 18:12
Kickaha59 Messages postés 18 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 5 juin 2009 - 5 déc. 2008 à 15:43
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

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 déc. 2008 à 21:06
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
3
Kickaha59 Messages postés 18 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 5 juin 2009
4 déc. 2008 à 23:20
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.
0
Kickaha59 Messages postés 18 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 5 juin 2009
5 déc. 2008 à 15:43
Merci, çà marche :)
0
Rejoignez-nous