Suppression de noeuds de JTree un par un

Résolu
cs_coltman Messages postés 97 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 10 février 2009 - 2 févr. 2009 à 12:00
cs_coltman Messages postés 97 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 10 février 2009 - 3 févr. 2009 à 12:03
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

cs_coltman Messages postés 97 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 10 février 2009
3 févr. 2009 à 12:03
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);
           
        }

       
    }
3
cs_coltman Messages postés 97 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 10 février 2009
3 févr. 2009 à 09:47
pas d'idées ?? :S
0