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] Changer l'icone des feuilles


Sujet :

Composants Java

  1. #1
    Membre régulier Avatar de dinver
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 122
    Points : 110
    Points
    110
    Par défaut [JTREE] Changer l'icone des feuilles
    J'ai réussi à changer facilement l'icone des feuilles avec ce petit code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //Set the icon for leaf nodes.
            ImageIcon leafIcon = createImageIcon("images/middle.gif");
            if (leafIcon != null) {
                DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
                renderer.setLeafIcon(leafIcon);
                tree.setCellRenderer(renderer);
            } else {
                System.err.println("Leaf icon missing; using default.");
            }
    Mon soucis est que j'ai un tree qui ressemble à ça :

    PERSONNEL
    |_ADMIN
    |_PRIVILEGE
    |_INVITE
    .....|_user1
    .....|_user2
    si le noeud admin n'a pas de fils il est considéré comme feuille de même pour privilège donc j'aurais la même icône pour ADMIN, PRIVILEGE, user1 et user2.

    Or, je veux que ADMIN, PRIVILEGE ont une même icône même s'ils n'ont pas de fils et les fils de ces trois noeuds aient une autre icône.

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 120
    Points
    120
    Par défaut
    Ben tu test:

    Tu crée ton propre renderer, qui extends DefaultTreeCellRenderer
    Dans le renderer, tu fais ceci en gros pour récupérer ton objet, et pour pouvoir accéder a sa valeur textuelle

    Dans la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public Component getTreeCellRendererComponent(JTree tree, Object value,
    		boolean sel, boolean expanded, boolean leaf, int row,
    		boolean hasFocus)
    Tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
    if (node.getUserObject() instanceof MyElement) {
    	MyElement mynode = (MyElement) node.getUserObject();
            if(mynode.getNom().equals("ADMIN")){
                    this.setLeafIcon(fold);
    		this.setOpenIcon(fold);
    		this.setClosedIcon(fold);
            }
    }
    Et puis tu lui affecte le même icone aux trois méthodes....
    Et le tour est joué!

  3. #3
    Membre régulier Avatar de dinver
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 122
    Points : 110
    Points
    110
    Par défaut
    Merci pour l'aide.
    J'ai essayé d'implémenter l'interface comme tu m'a suggéré mais j'ai pas compris MyElement représente quoi exactement. J'ai une erreur.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 120
    Points
    120
    Par défaut
    Bah en fait, MyElement....c'est mon Element a moi
    Ca dépends de ce que tu met dans ton JTree...
    Moi j'y met des objets de la classe MyElement...
    Mais ca peux aussi être juste un String, ou un objet de ta création...
    En fait faut remplacer MyElement par le type que tu passe au JTree:
    DefaultMutableTreeNode grp1 = new DefaultMutableTreeNode(Object);

    Dans mon code moi je fais :
    DefaultMutableTreeNode grp1 = new DefaultMutableTreeNode((MyElement) melt);

    Voila, je sais pas trop si je suis clair la...mais si tu as d'autres questions sur les renderer, n'hésite pas! ;-)

Discussions similaires

  1. [XL-2007] Changer le nom des feuilles en fonction des cellules
    Par Ysae68 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/04/2018, 00h52
  2. JTree personaliser les icones des feuilles
    Par nano3000 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 12/04/2013, 17h43
  3. Changer les icones des dossiers
    Par emulamateur dans le forum VBA Access
    Réponses: 7
    Dernier message: 23/03/2013, 18h41
  4. Changer l'icone des dossiers d'un CNF
    Par Pikouse dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 13/10/2009, 16h05
  5. Changer les icones des dossiers
    Par Asdorve dans le forum Windows XP
    Réponses: 6
    Dernier message: 12/05/2006, 13h37

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