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

AWT/Swing Java Discussion :

Problème changement d'icone ds un arbre !


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 47
    Par défaut Problème changement d'icone ds un arbre !
    Bonjour à tous,

    Voila mon probème je dois changer le type d'icone ds un arbre en fonction d'une propriété de l'objet metier. J'ai un arborescence d'objet metier Data<Ressource> et lorsque la propriété isGroup de Ressource est 'true' mais que l'objet est une feuille ds l'arbre, je dois afficher l'icone 'DefaultClosedIcon' et non 'DefaultLeafIcon' ... J'ai donc créé un rendrer que voici :

    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
     
    public class StagiaireTreeCellRenderer 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);
     
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
            Data<Ressource> dataRessource=(Data<Ressource>)node.getUserObject();
     
            if(dataRessource!=null&&dataRessource.getData()!=null){
                setText(dataRessource.getData().getName());   
                if(dataRessource.getData().isGroup()==true&&leaf==true)
                    this.setLeafIcon(this.getDefaultClosedIcon());
                else 
                    this.setLeafIcon(this.getDefaultLeafIcon());
            }
            else
                setText("???");
     
            return this;
        }
    }
    Le problème est que les bons icones ne sont pas selectionné ... Par contre dès que je sélèctionne une ligne ds mon arbre, là tout est correcte ... Mais si après je change d'écran ou que je bouge la scrollbar de nouveau ca déconne !

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Je ne comprends tout, mais je pense que tu te mélanges les pédales dans les icones de leaf.

    Lorsque tu fais setLeafIcon, cela ne va pas changer l'icone renvo, mais cela va changer l'icone que tu renverras en cas de noeud feuille. Donc, ton icone renvoyé, lui, restera le même.

    Il faut que tu renseignes correctement les icones feuilles, la valeur booléenne de feuille, avant d'appeler super.getTreeCellRendererComponent, et non pas après.

    Sous toutes réserves avec les précautions d'usage sans la présence de mon avocat en toute bonne foi.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 47
    Par défaut
    Merci c'était effectivement ça le problème...

    Je viens de modifier le code comme ceci et j'ai un rendu correcte:

    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
     
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel,boolean expanded, boolean leaf, int row,boolean hasFocus) {
     
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
            Data<Ressource> dataRessource=(Data<Ressource>)node.getUserObject();
            String text="";
     
            if(dataRessource!=null&&dataRessource.getData()!=null){
                text=dataRessource.getData().getName();   
                if(dataRessource.getData().isGroup().equals(true)&&leaf==true)
                    this.setLeafIcon(this.getDefaultClosedIcon());
                else
                    this.setLeafIcon(this.getDefaultLeafIcon());
            }
            else
                text="???";
     
            super.getTreeCellRendererComponent(tree,text,sel,expanded, leaf, row, hasFocus);
     
            return this;
        }

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

Discussions similaires

  1. Problème changement icone VB.NET !
    Par Logiinx dans le forum VB.NET
    Réponses: 1
    Dernier message: 27/04/2013, 21h24
  2. [JTree] Problème dans le changement d'icone
    Par Shurka dans le forum Composants
    Réponses: 6
    Dernier message: 17/08/2007, 17h32
  3. Réponses: 6
    Dernier message: 22/06/2007, 15h51
  4. [NON RESOLU] Problème changement maitre détail - Requête SQL
    Par Leesox dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/08/2005, 09h49
  5. [Debutant] probleme de changement d'icone de fenetre
    Par orelero dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 27/07/2005, 11h16

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