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 :

[JTree] Plusieurs icônes par feuille


Sujet :

Composants Java

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut [JTree] Plusieurs icônes par feuille
    Bonjour,

    J'aimerai personnaliser un JTree de façon à avoir plusieurs icônes par feuille. Chaque icône indiquant un état spécifique. La méthode classique ne permet d'avoir qu'une seule icône (JLabel), il faut donc que j'utilise un JPanel.

    Le problème est qu'avec des JPanel les lignes de mon JTree se chevauchent.

    Voici le code, j'ai redéfinis DefaultTreeCellRenderer :
    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
     
    public class CustomTreeCellRenderer extends DefaultTreeCellRenderer {
     
        public Component getTreeCellRendererComponent(
            JTree tree, Object value, boolean sel, boolean expanded,
            boolean leaf, int row, boolean hasFocus) {
     
            super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,
                row, hasFocus);
     
            JPanel jp = new JPanel();
            jp.setBackground(Color.WHITE);
            jp.add(new JLabel(icons[ICON_LOGGED_OUT])); //icons: ImageIcon[]
            jp.add(new JLabel(icons[ICON_NOT_READY]));
            jp.add(new JLabel(value.toString()));
     
            return jp;
        }
    }
    Qu'en pensez-vous ? Existe-t-il un moyen plus simple de faire ce que je veux ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut
    Bonjour,

    pour moi c'est le bon moyen pour faire ce que tu veux faire.

    Pour ton histoire de chevauchement, c'est possible que ce soit simplement un problème de hauteur de ligne dans ton JTree.
    Essaye de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tonJtree.setRowHeight(-1);
    Ca va permettre à chaque ligne de prendre sa preferred size.

    Cdlt

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    C'était bien ca le problème, en utilisant la méthode setRowHeight(-1) tout s'aligne.

    Par contre maintenant les lignes ne sont plus colorées lorsque je les sélectionne comme je n'utilise plus le JLabel DefaultTreeCellRenderer.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut
    Rebonjour,

    vérifie que le composant que tu renvoie dans le getTreeCellrendererComponent n'est pas opaque. Ca peut venir de la.

    Cdlt

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    Il est opaque mais même en le rendant non opaque ca ne change rien.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut
    Re,
    alors c'est que tes labels cachent la couleur de fond. Sers toi du boolean sel fournit dans la méthode pour gérer toi même la couleur de fond.
    Mais bon c'est bizarre quand meme.

    cdlt

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    En changeant la couleur de fond manuellement ca fonctionne.

    En tous cas merci pour ton aide.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut
    Re,

    désolé j'avais pas vu mais en fait tu fais un truc très bizarre!!!!!

    si tu appelles la méthode super.get....., il te faut te servir du composant qui est retourné. C'est pour ca que ta sélection ne marchait plus!!!

    Et c'est donc logique d'avoir à la gérer toi même.

    Soit tu utilises ce que te retournes l'appel à super.getTree..., soit tu l'appelle pas.

    Cdlt

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

Discussions similaires

  1. [XL-2013] Modifier largeur plusieurs colonnes par vba sur toutes les feuilles d'un classer=ur
    Par bidochon34800 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/02/2015, 09h36
  2. Réponses: 1
    Dernier message: 29/05/2012, 15h31
  3. [DirectPlay] plusieurs clients par IP..
    Par k'n1 dans le forum DirectX
    Réponses: 4
    Dernier message: 21/02/2005, 03h26
  4. Réponses: 4
    Dernier message: 02/09/2004, 22h43
  5. Remplacer plusieurs colonnes par un 'alias'
    Par zestrellita dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/04/2004, 17h51

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