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] Problème dans le changement d'icone


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
    Juin 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 38
    Par défaut [JTree] Problème dans le changement d'icone
    Bonsoir,
    j'essaye de customiser un peu mon JTree. J'ai vu qu'il était possible de modifier les icones d'ouverture, fermeture et de feuille. Mais je n'arrive pas à trouver ce qu'il faut faire pour modifier l'icone du noeud Racine seulement (que ce soit ouverture ou fermeture).

    Quelqu'un aurait il une idée ?

    Merci

  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
    Bah comme les deux autres mais en utilisant la méthode setLeafIcon....

    Ou si tu veux faire un peu plus custo tu écris un TreeCellRenderer spécifique
    ++

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 38
    Par défaut
    Je l'ai dit que j'avais vu qu'on pouvait mettre une icone à une feuille spécifique. Ce que je voudrais, car ta réponse ne répond pas à mon problème, c'est savoir s'il était possible de changer l'icone mais que du Noeud Principal, celui qui a X enfants mais 0 parents.

    Merci en tout cas pour ta réponse.

  4. #4
    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
    Citation Envoyé par sinok
    TreeCellRenderer spécifique
    ++

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 38
    Par défaut
    Désolé j'ai oublié de spécifié que j'avais testé mais que ca ne fonctionnait pas tout à fait.
    Voici le code :
    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
     
        private Icon livre = new ImageIcon("./src/ressources/images/projects.png");
        private Icon file = new ImageIcon("./src/ressources/images/file.png");
     
           this.setCellRenderer(new DefaultTreeCellRenderer() {
                public Component getTreeCellRendererComponent(JTree tree,Object value,boolean selected,boolean expanded, boolean leaf,int row,boolean hasFocus) {
                    if (leaf) {
                        DefaultMutableTreeNode node=(DefaultMutableTreeNode)value;
                            setLeafIcon(file);
                    }
                    else
                        setOpenIcon(livre);
     
                        super.getTreeCellRendererComponent(tree,value,selected,expanded,leaf,row,hasFocus);
                    return this;
                }
            });
    le problème avec ce code c'est qu'il fonctionne lorsqu'il n'y a rien dans les enfants du père principal. Cependant, lorsque je rajoute un fils aux enfants du père je me retrouve avec la meme icone que celui du Père... ce qui est navrant dans mon cas...
    Merci pour ton aide

  6. #6
    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
    Dans ton cas

    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
    27
    28
     
        private class MyTreeRenderer extends DefaultTreeCellRenderer {
     
            private JLabel rootLabel;
     
            public MyTreeRenderer() {
                super();
                rootLabel = new JLabel();
                rootLabel.setIcon(new ImageIcon(getClass().getResource("asterisk.png")));
            }
     
            @Override
            public Component getTreeCellRendererComponent(JTree tree, Object value,
                    boolean sel, boolean expanded, boolean leaf, int row,
                    boolean hasFocus) {
                // TODO Auto-generated method stub
                TreeNode node = (TreeNode) value;
                if (node.getParent() == null) {
                    System.out.println("racine");
                    rootLabel.setText(node.toString());
     
                    return rootLabel;
                }
                return super.getTreeCellRendererComponent(tree, value, sel,
                        expanded, leaf, row, hasFocus);
            }
     
        }
    Suffisait de cogiter un peu et de comprendre un tant soit peu le concept de renderers...

    Le Renderers ne servent pas à manipuler le composant (le JTree dans ce cas). Mais servent à créer un composant qui fera le rendu de telle ou telle valeur des éléments contenus dans ton JTree...

    Alors avant de raler...Ca m'arrive de dire des conneries, mais les réitérer deux fois je suis pas psycho jusqu'à ce point

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 38
    Par défaut
    Merci pour ton aide Sinok, je n'ai pas eu besoin de faire de Renderer. mais ton bout de code m'a permis d'établir une vérification que je n'avais pas fait.
    Merci

Discussions similaires

  1. Problème dans l'exemple changements de l'affichage
    Par hm7845 dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 19/02/2011, 18h27
  2. Problème changement d'icone ds un arbre !
    Par ThePhenom dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 23/08/2007, 13h20
  3. problème dans le listener d'un jTree
    Par amelA dans le forum Composants
    Réponses: 6
    Dernier message: 30/05/2007, 04h45
  4. Réponses: 7
    Dernier message: 06/05/2007, 18h11
  5. [JTree] Problème d'ouverture de chemin dans un JTree
    Par antares24 dans le forum Composants
    Réponses: 2
    Dernier message: 11/03/2005, 08h18

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