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 :

icones avec une JList


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Par défaut icones avec une JList
    Je cherche à générer une liste d'icones avec une JList, mais je ne sais pas comment placer une image (icone) au dessus du texte de l'icone.

    Quelqu'un aurait un bout de code intéressant ???

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pas tout cuit mais j'ai un joli petit tuto Sun sur les Renderers en stock: http://java.sun.com/docs/books/tutor....html#renderer

    (le fonctionnement est exatement le même pour les JList et les JComboBox)

  3. #3
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    Salut,

    Regarde ici en bas de la page il y a un exemple de JList avec des icones

    http://www.apl.jhu.edu/~hall/java/Sw...ial-JList.html


    ++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Par défaut
    Aussi intéressant soient ces tutoriaux, je ne trouve pas la solution à mon problème.
    J'arrive à placer un texte et une image dans une cellule d'une JList, mais par défaut l'image et le texte sont alignés sur une ligne.
    Ce que je veux c'est qu'ils soient alignés verticalement (le texte sous l'image) , et là ça se complique.


    Encore un petit truc : comment fait-on pour aligner ces icones les uns à la suite des autres sur une (ou plusieurs) ligne(s) ???
    J'ai bien essayé la commande suivante sans y arriver : list.setLayoutOrientation(JList.HORIZONTAL_WRAP);

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Si si la réponse est dans les tutos, il suffit juste de comprendre le principe de ton renderer.
    Il s'aguit d'un JPanel, or on peut manipuler sans problème le layout du JPanel. Donc à partir de ça tu fais ce que tu veux...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Par défaut
    J'ai essayé avec un JPanel, mais le résultat n'est pas terrible (chevauchement des icones et du texte) : comprend pas !!!
    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
    25
    26
    public static class VaultExplorerRenderer extends JPanel implements ListCellRenderer {
            public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
                // alignement des icones
                list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
     
                // couleur de fond de la liste
                if(isSelected)
                    setBackground(new Color(230,240,240));
                else
                    setBackground(Color.white);
     
                // détection du fichier ou dossier pour y appliquer l'icone correspondant
                JLabel label = new JLabel(value.toString());
                label.setHorizontalAlignment(JLabel.CENTER);
                File file = new File(GlobalSettings.getCurrentDirectory() + File.separator + value.toString());
                if(file.isDirectory()) {
                    add(folderCloseIcon, BorderLayout.CENTER);
                    add(label, BorderLayout.SOUTH);
                } else {
                    add(fileIcon, BorderLayout.CENTER);
                    add(label, BorderLayout.SOUTH);
                }
     
                return this;
            }
        }
    Images attachées Images attachées  

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En fait au final tu peux aussi n'utiliser qu'un seul JLabel et lui dire de positionner le texte en dessous.

    http://java.sun.com/docs/books/tutor...nts/label.html

    J'avais un peu zappé ce détail.
    Sorry

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Par défaut
    Pas de problème, j'ai triuvé la solution : il fallait vider la panel au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
     
                setLayout(new BorderLayout());
                removeAll();                           // vidage du panel
     
                // couleur de fond de la liste
                if(isSelected)
                    setBackground(new Color(230,240,240));
                else
                    setBackground(Color.white);
    Et là ça marche beaucoup mieux ...

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

Discussions similaires

  1. Un Item d'une JList ouvre un nouveau Panel avec une JList + update
    Par nikolas92400 dans le forum Composants
    Réponses: 4
    Dernier message: 07/01/2015, 12h09
  2. problème avec une JList.addElement
    Par mayya dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 30/12/2008, 15h31
  3. Réponses: 2
    Dernier message: 27/12/2007, 08h28
  4. problème avec une Jlist
    Par vince351 dans le forum Composants
    Réponses: 5
    Dernier message: 22/05/2007, 14h46
  5. Association d'une icone avec une dll
    Par ybruant dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 14/07/2005, 11h10

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