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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

+ 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, 08h36
  2. Réponses: 1
    Dernier message: 29/05/2012, 14h31
  3. [DirectPlay] plusieurs clients par IP..
    Par k'n1 dans le forum DirectX
    Réponses: 4
    Dernier message: 21/02/2005, 02h26
  4. Réponses: 4
    Dernier message: 02/09/2004, 21h43
  5. Remplacer plusieurs colonnes par un 'alias'
    Par zestrellita dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/04/2004, 16h51

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