Suppression de noeuds de JTree un par un [Résolu]

Messages postés
97
Date d'inscription
jeudi 3 janvier 2008
Dernière intervention
10 février 2009
- - Dernière réponse : cs_coltman
Messages postés
97
Date d'inscription
jeudi 3 janvier 2008
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 ...
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
97
Date d'inscription
jeudi 3 janvier 2008
Dernière intervention
10 février 2009
3
Merci
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);
           
        }

       
    }

Merci cs_coltman 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_coltman
Messages postés
97
Date d'inscription
jeudi 3 janvier 2008
Dernière intervention
10 février 2009
0
Merci
pas d'idées ?? :S
Commenter la réponse de cs_coltman

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.