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) ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
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 ...