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 :

Comment savoir si deux noeuds ont un lien de parenté?


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 84
    Points : 61
    Points
    61
    Par défaut Comment savoir si deux noeuds ont un lien de parenté?
    Bonjour,
    alors voici mon problème. J'ai un JTree sur lequel j'ai sélectionné un nœud. J'ai aussi un objet que je sais être un noeud du JTree mais j'ignore où il se trouve dans l'arbre. Et ce dont j'ai besoin c'est de savoir si cet objet est un descendant (donc fils, petit-fils, etc) du noeud du JTree.

    Je n'ai pas vu, ni dans la doc de JTree, ni dans celle du DefaultTreeModel de fonction me permettant d'obtenir directement cela. Dans un premier temps j'avais envisagé de faire un test en analysant les TreePath. Mais je ne sais pas comment obtenir le TreePath d'un objet quelconque.

    Donc là je m'orienterais plutôt sur la création d'une fonction de parcours de l'arbre à partir de son noeud (via des appels à getChild) jusqu'à ce que je trouve le fils en question (on que j'ai parcouru en vain tous les descendants).

    Mais, par hasard, y aurait-il une solution plus simple? Si oui je suis preneur.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Je ne connais pas grand chose au JTree, mais il me semblerai plus judicieux d'utiliser les objet "TreeNode" et particulièrement la fonction "TreeNode getParent()"

    Un code envisageable serai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     isRelatedNode(TreeNode node1,TreeNode  node2){
    if(node1==null || node2==null){
    return false;
    }
    if(node1.equals(node2)){
    return true;
    }
    if(isRelatedNode(node1,node2.getParent())||isRelatedNode(node1.getParent(),node2()){
    return true;
    }
    return false;
    }
    lien javadoc :
    http://download.oracle.com/javase/6/docs/api/index.html
    lien How use :
    http://download.oracle.com/javase/tu...ents/tree.html

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 84
    Points : 61
    Points
    61
    Par défaut
    C'est plus ou moins ce que j'ai fait si ce n'est que je suis parti du père pour arriver au fils (donc parcours inverse de ce que tu fais). Mais cela nécessite donc un parcours manuel de l'arbre.

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Le parcours du père vers le fils implique le parcours de beaucoup plus d'éléments dans bien des cas.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 8
    Points : 14
    Points
    14
    Par défaut
    bonjour,

    ptite optimisation de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(isRelatedNode(node1,node2.getParent())||isRelatedNode(node1.getParent(),node2()){
    return true;
    }
    return false;
    }
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return isRelatedNode(node1,node2.getParent())||isRelatedNode(node1.getParent(),node2());

Discussions similaires

  1. Comment savoir combien de personnes ont noté un sujet?
    Par NicolasG dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 4
    Dernier message: 18/04/2006, 09h23
  2. Réponses: 2
    Dernier message: 28/01/2006, 14h54
  3. comment savoir si un fichier est un lien symbolique?
    Par trotters213 dans le forum C++
    Réponses: 2
    Dernier message: 02/12/2005, 12h55
  4. Réponses: 4
    Dernier message: 28/02/2005, 18h04
  5. [Excel] Comment savoir si la cellule contient un lien hypertexte ?
    Par Millenod dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 16/12/2004, 11h01

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