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] Suppresion de tous les noeuds sauf la racine


Sujet :

Composants Java

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 74
    Points
    74
    Par défaut [JTree] Suppresion de tous les noeuds sauf la racine
    J'ai un petit problème avec une JTree.Je voudrais enlever tous les noeuds de la racine, j'aimerai savoir pourquoi cette méthode ne marche pas :
    Exemple tout simple..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    JTree tree = new JTree();
    //...
    private void ViderArbre(){
       Enumeration enum = ((MutableTreeNode)tree.getModel().getRoot()).children();
       while ( enum.hasMoreElements() ){                       
           ((DefaultTreeModel)tree.getModel()). removeNodeFromParent((MutableTreeNode)enum.nextElement());
    }
    PS : Ma question n'est pas de savoir commen enlever tous les noeuds de l'arbre je l'ai réussi avec une autre méthode ma question est de comprendre pourquoi ca ne marche pas..

    Merci d'avance,
    Nicolas.

  2. #2
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 85
    Points
    85
    Par défaut
    la javadoc de children() indique
    Creates and returns a forward-order enumeration of this node's children. Modifying this node's child array invalidates any child enumerations created before the modification.
    tu supprimes les noeuds en parcourant l'enum. ce qui invailde peut etre l'enumeration.

  3. #3
    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
    Bonjour,
    à mon avis, ça ne marche pas parce que tu effectues deux opérations concurrentes sur le noeud : parcours des fils du noeud via l'énumération renvoyée par la méthode children(), modifications du noeud par la suppression de ses fils. Dans l'implémentation DefaultMutableTreeNode, la liste des fils est un vecteur. Tu ne peux pas parcourir une énumération du vecteur tout en modifiant le vecteur.

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 74
    Points
    74
    Par défaut
    Ok j'avais pas vu lu la javadoc à fond..Merci!
    Je comprends pourquoi il me supprime qu'un noeud sur deux.
    Nicolas.

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

Discussions similaires

  1. expression xpath sélectionner tous les noeuds sauf certains
    Par lucielemon dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 15/11/2012, 17h14
  2. Réponses: 0
    Dernier message: 25/11/2008, 13h58
  3. [JTree] Récupérer tous les noeuds
    Par DamS2502 dans le forum Composants
    Réponses: 5
    Dernier message: 21/04/2008, 12h13
  4. [JTree] rafraichir noeud sans minimiser tous les noeuds
    Par jdewalqu dans le forum Composants
    Réponses: 6
    Dernier message: 05/07/2006, 08h58
  5. selectionner tous les champs sauf un ?
    Par HULK dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/01/2005, 15h51

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