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
    [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
    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é
    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
    Ok j'avais pas vu lu la javadoc à fond..Merci!
    Je comprends pourquoi il me supprime qu'un noeud sur deux.
    Nicolas.

###raw>template_hook.ano_emploi###