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] Customiser un DefaultMutableTreeNode...


Sujet :

Composants Java

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2003
    Messages : 57
    Points : 61
    Points
    61
    Par défaut [JTree] Customiser un DefaultMutableTreeNode...
    Bonjour,

    Je me pose une question existentielle : peut-on customiser le UserObject d'un DefaultMutableTreeNode ?

    Je m'explique :
    • Imaginons que j'ai une classe Personne avec 3 attributs (nom, prenom, age)
    • Je crée 3 personnes : Pierre, Paul, Jacques
    • Je construis un JTree avec 3 enfants qui sont mes 3 personnes. Pour cela j'instancie 3 DefaultMutableTreeNode en passant mes instances de Personne.
    • C'est bien, mon arbre est construit et je peux récupérer l'objet Personne courant (celui selectionné) en faisant un getUserObject().

    Sauf que les enfants de mon arbre sont très moche ! En gros le nom des enfants sont les instance mise en mémoire (il me semble) donc pas très parlant...

    Donc ma question est : est-til possible de passer à un DefaultMutableTreeNode un titre (à afficher) et un UserObject (pour le récupérer en naviguant) ?

    J'espère avoir été clair (j'en suis pas si sur...)

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Bonsoir,

    j'espère bien comprendre... ce que tu voudrais c'est que le nom affiché sur chaque noeud soit celui de la personne, et non l'identifiant de l'instance en mémoire.
    A priori, rien de plus simple, il te suffit de redéfinir la méthode toString pour la classe Personne, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String toString() {
        return getNom() + " " + getPrenom() + " (" + getAge() + " ans)";
    }
    En effet, la méthode toString() de la classe DefaultMutableTreeNode se contente d'appeler getUserObject().toString(). Il te suffit donc de définir correctement la méthode toString() sur la classe des objets que tu attaches en chaque noeud.

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2003
    Messages : 57
    Points : 61
    Points
    61
    Par défaut
    En effet, c'est ce que j'aimerais avoir.
    Mais en faisant ça, lorsque je récupère mon UserObject, celui ci est une String et non un objet "Personne" : là est mon problème...

  4. #4
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Il faut que la propriété userObject de ton noeud soit un objet de type Personne et non une String :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DefaultMutableTreeNode adam = new DefaultMutableTreeNode(new Personne("Adam"));
    DefaultTreeModel treeModelPersonne = new DefaultTreeModel(adam);
     
    DefaultMutableTreeNode cain = new DefaultMutableTreeNode(new Personne("Cain"));
    treeModelPerson.insertNodeInto(cain, adam, adam.getChildCount());

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2003
    Messages : 57
    Points : 61
    Points
    61
    Par défaut
    Ok, je viens de percuter pour le toString()... (un peu long à la détente..)

    Cela fait effectivement ce que je veux. Merci pour l'info

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

Discussions similaires

  1. JTree - DefaultMutableTreeNode - GetParent NULL !
    Par Mattgic dans le forum Composants
    Réponses: 1
    Dernier message: 03/10/2010, 00h32
  2. [JTree] DefaultMutableTreeNode et equals
    Par mavina dans le forum Composants
    Réponses: 0
    Dernier message: 22/05/2009, 11h07
  3. [JTree][XML] Node étendant DefaultMutableTreeNode
    Par mavina dans le forum Composants
    Réponses: 1
    Dernier message: 22/04/2009, 04h37
  4. Réponses: 3
    Dernier message: 11/12/2007, 11h10
  5. Réponses: 3
    Dernier message: 24/09/2004, 21h21

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