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] Probleme création noeud


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 46
    Points
    46
    Par défaut [JTree] Probleme création noeud
    Bonsoir,
    Depuis deux-trois jours je suis sur un petit probleme dont je n'arrive pas vraiment a trouver de solution:

    J'utilise la classe Jtree pour créer un arbre de répertoire tout bête et y inserer des données diverses. J'ai par la suite crée deux méthodes:
    • Une qui créer dynamiquement un nouveau noeud (que l'on peut qualifier de nouvelle catégorie dans mon arbre) dans l'arbre.
    • Une autre quasi similaire à la précedente qui créer un sous-noeud (sous-catégorie) à partir d'un noeud parent dans l'arbre.


    Mon probleme est du au fait que je n'arrive pas a obtenir ce résultat. Car lorsque je créer un nouveau noeud, je référence le noeud racine comme parent; ce qui a biensur pour conséquence de créer un élement et non un noeud.

    J'ai beau essayé de trouver comment contourner ce problème mais.. impossible, les idées me manquent

    Je vous joint une copie d'écran d'un programme en java qui réalise ce que j'aimerais implementer, ce sera surement plus parlant

    http://www.toofiles.com/fr/t/images/...773-6br5pe.gif

    Bonne soirée à tous!

    tittoto

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    As-tu essayé la méthode setRootVisible(false) de ton arbre ?
    Si j'ai bien compris ton problème (pas très clair sur ce que tu veux exactement au final), ça devrait pouvoir t'aider ...

    A+

  3. #3
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Qu'apelles-tu un élément ?

    C'est quoi la différence avec un noeud ?

  4. #4
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Il me semble que par défaut, un noeud n'ayant pas de fils est représenté avec l'icône rond (<=> feuille de l'arbre) alors qu'un noeud ayant un ou plusieurs fils est représenté avec l'icône dossier.

    Tu peux définir les icônes par défaut pour les éléments feuilles et noeuds de manière à ce que les deux soient un dossier, mais à ce moment-là, toutes tes feuilles auront aussi cette icône.
    Ou alors, tu peux aussi créer directement un fils au sous-noeud que tu crées pour que celui-ci ait directement l'icône adéquate, ça dépend de ce à quoi corespond un sous-noeud dans ton arborescence (je ne sais pas si je suis très clair...).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 46
    Points
    46
    Par défaut
    Merci pour vos réponses.
    POur répondre à certains, j'utilise un arbre pour représenter une arborescence de flux RSS.

    Chaque flux RSS sera désigné par son titre et représenté sous la forme d'un élément.
    Chaque flux RSS (donc élément) est attaché ou non a un noeud (une catégorie).

    Es-ce plus clair ?

    En résumé, j'aimerais faire le même "style" d'arborescence que le logiciel opensource RSSOwl. Et si vous me suivez toujours , dans le principe, si une personne désire créer une nouvelle catégorie pour y placer des flux de même type, il devient logique qu'elle puisse créer une nouvelle catégorie sans pour autant avoir a y assigner obligatoirement un flux RSS.

    Suis-je un peu plus clair ?

    Bon apres-midi

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 46
    Points
    46
    Par défaut
    Désolé de refaire remonter cet ancien topic, mais n'ayant pas réussit à résoudre mon problème je vais l'expliquer simplement.

    Pour comprendre mon problème, imaginez-vous seulement que je désire créer une arborescence de type explorer windows. Et que dans cette arborescence je désire créer un simple répertoire.

    Je cherche simplement à représenter ce systeme en java, mais .. je n'y parvient pas car lorsque je créer un nouveau répertoire, il prend la forme d'un élement et non d'un dossier.

    En espérant que cela soit plus clair et que vous avez des pistes..

    Bon lundi et bon courage pour la reprise du travail !

  7. #7
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Tu dois pouvoir le faire comme ça :

    1) Définir une classe MyTreeNode qui étend DefaultMutableTreeNode et qui contient un booléen supplémentaire spécifiant si ton noeud représente une catégorie ou un style RSS.

    2) Créer ton arbre avec des noeuds de type MyTreeNode en spécifiant à la création si c'est un noeud de catégorie ou de flux.

    3) Définir un TreeCellRenderer qui appliquera l'icône dossier aux noeuds de type catégorie et la boule (ou toute autre icône de ton choix) aux noeuds de type flux.

    Regarde le tuto Sun pour voir comment modifier le TreeCellRenderer.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 46
    Points
    46
    Par défaut
    Je test ce soir...
    Merci pour ta réponse! J'avais songé à étendre DefaultMutableTreeNode, mais ajouter un boolean supplémentaire.. je dois avouer que je n'y avait pas pensé!

    Je vous tiens au courant et merci encore

  9. #9
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Euh... ou alors plus simple, tu redéfinis la méthode TreeNode.isLeaf() dans la classe de tes noeuds, et tu retournes false s'il s'agit d'un répertoire...

    Ou alors, tu dois aussi pouvoir redéfinir la méthode DefaultTreeModel.isLeaf(Object) si cela t'es plus simple par rapport à ce que tu as déjà développé...


    Mais le mieux et le plus propre selon moi, c'est de redéfinir un TreeCellRenderer qui dira comment afficher chacun de ces noeuds (plus lourd, mais plus propre, car une feuille - leaf - est un élément ne contenant aucun enfant... rien à voir avec le fait que l'élément peut en contenir ou non...)

Discussions similaires

  1. [JTree] probleme non reconnaissance du noeud spécifié en ajout
    Par youssefkermel dans le forum Composants
    Réponses: 0
    Dernier message: 28/04/2009, 13h41
  2. [JTree] Récupérer le noeud sélectionné, sans événement
    Par Bobsinglar dans le forum Composants
    Réponses: 4
    Dernier message: 26/05/2005, 18h06
  3. [Jtree] revenir au noeud precedemment selectionné
    Par maxxou dans le forum Composants
    Réponses: 4
    Dernier message: 03/01/2005, 20h10
  4. Réponses: 3
    Dernier message: 09/08/2004, 12h24
  5. Réponses: 3
    Dernier message: 27/07/2004, 12h01

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