Suppression de noeuds de JTree un par un

Résolu
Signaler
Messages postés
97
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
10 février 2009
-
Messages postés
97
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
10 février 2009
-
Bonjour,

Pour un besoin bien spécifique j'ai besoin de supprimer les noeuds d'un arbre un par un ... j'ai fait un algo qui marche bien lorsqu'il s'agit de supprimer des feuilles, mais lorsqu'il s'agit de noeuds ca se complique, mon algo ne tourne pas bien il supprime un noeud sur deux et ne supprime pas le noeud selectionné pour la suppression ... je ne sais pas si j'utilise les bonnes méthodes de DefaultMutableTreeNode ou des collections mais voici le code que j'utilise :

je definis 2 methodes differentes : l'une pour virer des feuilles (removesimpleelement) et l'autre pour les noeuds (removegroupofelements) ...


public void removegroupofelements (DefaultMutableTreeNode selectednode) {

Enumeration enumchildren = selectednode.children();

while (enumchildren.hasMoreElements()) {

DefaultMutableTreeNode current = (DefaultMutableTreeNode) enumchildren.nextElement();

if (current.isLeaf()) {

removesimpleelement(current, true);

}

else {

removegroupofelements(current);
removesimpleelement(current,true);
selectednode.remove(current);


}

}

if (selectednode!=TAME_rootnode) {

removesimpleelement(selectednode,false);
selectednode.removeFromParent();

}


}







public void removesimpleelement (DefaultMutableTreeNode selectednode, boolean doremove) {

DefaultMutableTreeNode parent=(DefaultMutableTreeNode) selectednode.getParent();

if (selectednode.isRoot()==false) {


if (doremove==true) {

//je fais ici mon traitement...
parent.remove(selectednode);

}


}

if (selectednode==null) {

return;

}

My_Tree.updateUI();


}



en fait lorsque le root est selectionné je supprime tous ses descendants mais je ne le supprime pas... il faut qu'il reste là, cependant s'il s'agit d'un noeud dans l'arbre je le supprime ainsi que tous ses enfants et les enfants de ses enfants ....


voilà .... merci pour votrre aide ...

2 réponses

Messages postés
97
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
10 février 2009

c'est bon c'est reglé !

petit souci purement algorithmique :

voici le bon code :

    public void removegroupofelements (DefaultMutableTreeNode selectednode) {
       
        int nbchildren=selectednode.getChildCount();
       
        for (int i=0;i<nbchildren;i++) {
           
            if (selectednode.getChildAt(0).isLeaf()) {
               
                if (selectednode.isRoot()) {
               
                    removesimpleelement((DefaultMutableTreeNode)selectednode.getChildAt(0),true);
               
                }
               
                else {
                   
                    removesimpleelement((DefaultMutableTreeNode)selectednode.getChildAt(0),true);

                   
                }
               
            }
           
            else {
               
                removegroupofelements ((DefaultMutableTreeNode)selectednode.getChildAt(0));
            }
           
           
        }
       
        if (selectednode.isRoot()==false) {
           
            removesimpleelement(selectednode,true);
           
        }

       
    }
Messages postés
97
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
10 février 2009

pas d'idées ?? :S