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 :

parcours d'un treePanel


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut parcours d'un treePanel
    bonjour,

    j'aimerais savoir si quelqu'un sait comment parcourir un treePanel. C'est à dire que j'aimerai pouvoir lire toutes les lignes du treePanel afin d'enregistrées les données dans un fichier XML.

    De plus, es-que quelqu'un sait comment récupérer la valeur de l'une de celles-ci pour l'afficher dans un TextFields.

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    ca n'inspire personne...???

  3. #3
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    qu'appelles-tu treePanel ? Un JTree ? Dans ce cas, un parcours récursif de l'arbre est possible :
    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
    List maListe = new ArrayList();
     
    public void listChildren(Object parent, TreeModel model) {
     
      maListe.add(parent);
      if(parent.isLeaf())
        return;
     
      for(int i = 0; i < model.getChildCount(parent); i++) {
        listChildren(model.getChild(parent, i), model);
      }
    }
     
    ...
     
    listChildren(monJTree.getRoot(), monJTree.getModel());
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    es que l'on peut l'adapter à un DynamicTree???

    Merci

  5. #5
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Même réponse que dans ton autre fil, on ne sait pas ce qu'est ton DynamicTree, donc il nous faut des précisions.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    mon DynamicTree c'est un Jtree avec la possibilité d'ajouter des onglets à l'aide de boutons

  7. #7
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Eh bien dans ce cas, tu peux ajouter le TreeSelectionListener sur le JTree de ton DynamicTree.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    ok merci

    et es qu'il existe une fonction comme "removeCurrentNode()" qui permettrais de sélectionner le feuille courante pour en récupérer les données?

  9. #9
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object selectedObject = monJTree.getLeadSelectionPath().getLastPathComponent();
    Un petit tour sur ou sur le tutoriel de sun te sera sûrement utile.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    il est pas content avec ce code car il me dit qu'il ne s'applique pas au DynamicTree...

    Merci quand meme, je vais allé faire un petit tour sur GOOGLE !!!!!!!!!!!

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    Bon, de l'amélioration, j'ai réussi a retrouver et à enregistrer tous les fils de la racine ... Merci à vous

    Nouveau problème, c'est pour qu'il parcour automatiquement l'arbre pour qu'il trouve les fils de ces fils...

    J'ai alors mi une condition, ceux qui donne :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     public void enregistre(final String fichier)
        
        {
       
        	int i;
        	int nbr;
        	String value;
        	 final Element racine = new Element(treePanel.treeModel.getRoot().toString());
        	 // On crée un nouveau Document JDOM basé sur la racine que l'on vient de créer //
             final org.jdom.Document document = new Document(racine);
    
             nbr = treePanel.rootNode.getChildCount();
             for (i=0; i< nbr; i++)
             
             {
    
            	 AutoElement  libelle = new AutoElement();
            	 libelle.setText(treePanel.rootNode.getChildAt(i).toString());
            	 value = libelle.getText();
                 racine.addContent(libelle);
          
                 
                 if  (!treePanel.rootNode.getChildAt(i).isLeaf());
                	 AutoElement  fils = new AutoElement();
            	 fils.setText(treePanel.  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! );
                 libelle.addContent(fils);
             }
                 
    
           try
           {
              // Affichage classique avec getPrettyFormat() //
              final XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
           //Création du fichier
              sortie.output(document, new FileOutputStream(fichier));
           }
             
           catch (final java.io.IOException e){}}
    Voila, par contre, à l'endroit des point d'exclamation, pas trouver la fonction qui permet de retrouver les fils des fils, une idée?

  12. #12
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Alors là tu as 2 situations :
    - soit tu as un nombre de niveaux fini et pas trop grand (genre tu t'arrêtes aux petit-fils de la racine) et tu restes avec un code organisé comme celui que tu as posté
    - soit tu dois aller toujours au bout des branches, et là il faudra absolument utiliser une méthode récursive, ce qui est plus difficile (d'autant plus qu'écrire un fichier XML est plus compliqué que remplir une liste).


    Pour le code, tu as plusieurs manières de remplacer les points d'exclamation (par exemple en utilisant des TreeNodes), mais comme je ne sais pas si tu as bien des TreeNodes, le plus général est d'utiliser le TreeModel. Si j'ai bien compris ton code, ceci devrait marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if  (!treePanel.rootNode.getChildAt(i).isLeaf()) {
      Object parent = treePanel.rootNode.getChildAt(i);
      for(int j = 0; j < treeModel.getChildCount(parent); j++) {
        AutoElement  fils = new AutoElement();
        fils.setText(treeModel.getChild(parent, j));
        libelle.addContent(fils);
      }
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    Merci, ca avance, j'arrive désormais a retrouver les petits fils. En revanche, il ne fait qu'une étape, es ce normal?

    C'est à dire qu' il ne retrouve pas les petits petits fils. lol quel idée davoir une grande famille !!!!

  14. #14
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Oui, c'est normal qu'il n'explore pas les branches car on n'utilise pas de récursivité. Pour explorer la totalité de l'arbre, il faut faire un truc du genre :
    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
    public void toXMLElement(Object parent, TreeModel model, AutoElement element) {
     
      // on met l'objet parent dans l'élément XML
      element.setText(parent.toString());
     
      // on crée des sous éléments XML qui contiendront les fils du parent
      // les fils sont ajoutés récusrivement en appellant la méthode
      // toXMLElement avec d'autres paramètres
      for(int i = 0; i < model.getChildCount(parent); i++) {
        AutoElement subElement = new AutoElement();
        toXMLElement(model.getChild(parent, i), model, subElement);
        element.addContent(subElement);
      }
    }
     
    // on lance le tout
    AutoElement rootElement = new AutoElement();
    toXMLElement(treePanel.rootNode, treeModel, rootElement);
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    et donc cette classe remplace complètement ma classe enregistre?

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    donc en fait, j'ai regarder le code, mais le problème, c'est que je ne voie pas ou l'ajouter dans mon code, quelqu'un pourrait m'aider svp?

  17. #17
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Tu as besoin de 2 fonctions : la fonction récursive toXMLElement et une fonction pour initialiser le tout. Pour l'initialisation tu devras récupérer des bouts de ton code (créer le document, etc).
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    heu, je sui désolé, mais sa fait que 2 semaines que je débute le java...
    Ya moyen d'avoir un petit coup de main stp???

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    Quelqu'un sait comment lier ces 2 parties de code afin de parcourir une arborescence svp???

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
      public void enregistre(final String fichier)
     
        {
     
        	int i;
        	int nbr;
        	String value;
        	 final Element racine = new Element(treePanel.treeModel.getRoot().toString());
        	 // On crée un nouveau Document JDOM basé sur la racine que l'on vient de créer //
             final org.jdom.Document document = new Document(racine);
     
             nbr = treePanel.rootNode.getChildCount();
             for (i=0; i< nbr; i++)
     
             {
     
            	 AutoElement  libelle = new AutoElement();
            	 libelle.setText(treePanel.rootNode.getChildAt(i).toString());
            	 value = libelle.getText();
                 racine.addContent(libelle);
     
     
                 if  (!treePanel.rootNode.getChildAt(i).isLeaf()) {
                	  Object parent = treePanel.rootNode.getChildAt(i);
                	  for(int j = 0; j < treePanel.treeModel.getChildCount(parent); j++) {
                		   AutoElement  fils = new AutoElement();
                		   fils.setText(treePanel.treeModel.getChild(parent, j).toString());
                		   libelle.addContent(fils);
                	  }
     
             }
             }
     
     
           try
           {
              // Affichage classique avec getPrettyFormat() //
              final XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
           //Création du fichier
              sortie.output(document, new FileOutputStream(fichier));
           }
     
           catch (final java.io.IOException e){}}
    et

    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
    24
     
     
        public void toXMLElement(Object parent,  TreeModel model, AutoElement element) {
     
      	  // on met l'objet parent dans l'élément XML
      	  element.setText(parent.toString());
     
      	  // on crée des sous éléments XML qui contiendront les fils du parent
      	  // les fils sont ajoutés récusrivement en appellant la méthode
      	  // toXMLElement avec d'autres paramètres
      	  for(int i = 0; i < model.getChildCount(parent); i++) {
      	    AutoElement subElement = new AutoElement();
      	    toXMLElement(model.getChild(parent, i), model, subElement);
      	    element.addContent(subElement);
      	  }
     
    //	 on lance le tout
        	AutoElement rootElement = new AutoElement();
        	toXMLElement(treePanel.rootNode, model, rootElement);
     
     
     
     
    }
    Merci

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Par défaut
    Quelqu'un saurait m'aider svp?????

Discussions similaires

  1. [Debutant(e)]Pb parcours de tableau
    Par joquetino dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 22/09/2004, 10h08
  2. [C#] [ADO] Parcours d'une grande quantité d'enregistrements
    Par Wavyx dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/09/2004, 10h16
  3. [LG]Lenteur de parcours de fichier
    Par YéTeeh dans le forum Langage
    Réponses: 9
    Dernier message: 26/11/2003, 23h57
  4. Ordre de parcours de l'arbre...
    Par Sylvain James dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 01/12/2002, 19h41
  5. arbre de parcour d'arborescence windows
    Par chupachoc dans le forum Composants
    Réponses: 7
    Dernier message: 09/09/2002, 09h09

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