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: Obtenir le numéro de la ligne d'un noeud de JTree


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut JTree: Obtenir le numéro de la ligne d'un noeud de JTree
    Salut tout le monde,
    j'ai besoin d'obtenir le numéro de la ligne des noeuds d'un arbre JTree, j'ai essayé d'utiliser la méthode getIndex() mais ça n'a pas marché (soit à cause d'une mauvaise manipulation ou soit ce n'est pas la bonne méthode à utiliser).
    je vais vous présenter le problème, par exemple si on a un arbre sous la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    racine
        pere1
            fils1
            fils2
        pere2
            fils3
            fils4

    j'aimerais que la méthode que vous me proposeriez retourne l'index de chaque noeud comme suit:

    racine ==> ligne: 0
    pere1 ==> ligne: 1
    fils1 ==> ligne: 2
    fils2 ==> ligne: 3
    pere2 ==> ligne: 4
    fils3 ==> ligne: 5
    fils4 ==> ligne: 6

    j'espere que le problème est bien clair, merci d'avance de vos réponses.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    Je n'ai pas de solution miracle a te donner, mais je peux t'aiguiller en t'apportant quelques pércisions
    sur l'utilisation de la méthode getIndex().
    En fait cette méthode donne l'index du noeud en paramètre pour le noeud parent direct (et qui appelle la méthode).
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    child.getParent().getIndex(child);
    te donneras l'index du noeud child depuis son noeud parent.

    Voilà peut-être un début de piste...

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    merci de votre réponse, j'ai essayé votre proposition mais malheureusement ça n'a pas fontionné, voici ce que j'ai obtenu (à coté de chaque noeud il y'a le numero de la ligne, et bien sur la racine ne peut pas être incluse puisqu'elle ne posséde pas de pére):

    pere1 0
    fils1 0
    fils2 1
    pere2 1
    fils3 0
    fils4 1

    si la méthode qui retourne le numéro de la ligne n'existe pas, peut être on doit la developper nous même. Sinon j'espere toujours obtenir une petite indication...

  4. #4
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    Et ouais logique :
    - pere1 est en index 0 de racine, et pere2 en index 1 de racine
    - fils1 en index 0 de pere1, et fil2 en index 1 de pere1
    ...

    Je ne pense pas qu'il existe un méthode permettant de retrouver l'index d'un noeud
    directement depuis la racine, cependant, on doit pouvoir faire quelquechose en utilisant
    la méthode getIndex() à bon escient...

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    j'ai essayé de developper cette méthode mais elle ne marche pas, toutefois je vais copier le code source pour voir si vous aurez une amélioration:

    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
     
    //root représente la racine et noeud représente le noeud dont on veut chercher la ligne
    int ligneNoeud(DefaultMutableTreeNode root,DefaultMutableTreeNode noeud,int ligne)
    {
    	if (root!=noeud)
    	{
    		if (root.getChildCount()==1)
    		{
    			ligneNoeud((DefaultMutableTreeNode) root.getChildAt(0),noeud,ligne++);
    		}
     
    		if (root.getChildCount()==2)
    		{
    			ligneNoeud((DefaultMutableTreeNode) root.getChildAt(0),noeud,ligne++);
    			ligneNoeud((DefaultMutableTreeNode) root.getChildAt(1),noeud,ligne++);
    		}
    	}
     
    	return ligne;
    }
    Je travaille avec un arbre binaire c'est pour ça que je teste seulement le cas où le noeud a un fils ou deux.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    En même temps j'ai un peu de mal à saisir ton système de calcul puisque en toute logique l'indexation des noeuds se ferait plutôt ainsi :

    racine ==> index: 0
    pere1 ==> index: 1
    fils1 ==> index: 3
    fils2 ==> index: 4
    pere2 ==> index: 2
    fils3 ==> index: 5
    fils4 ==> index: 6

    C'est bien la ligne du noeud dans la représentation verticale de l'arbre que tu souhaites obtenir ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/09/2014, 07h03
  2. Obtenir le numéro de ligne dans les LOGS
    Par kakibend dans le forum C
    Réponses: 4
    Dernier message: 21/01/2008, 17h35
  3. Réponses: 7
    Dernier message: 06/06/2006, 16h40
  4. [TMemo] Obtenir le numéro de la ligne
    Par JFM dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/08/2005, 20h06

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