Coucou tout le monde,


J'ai beau avoir lu plusieurs discussions sur le sujet du rafraîchissement du contenu d'un JTree, je continue à me battre avec mon code...

Mon application affiche un arbre dont les feuilles sont les noms des sous-répertoires d'un répertoire donné. Il se peut que l'utilisateur ajoute ou efface un ou plusieurs sous-répertoires. Sans quitter l'application, il devrait avoir la possibilité de rafraîchir l'arbre.

Avec le code ci-dessous, l'arbre affiché est vide (i.e. seul le root "List of tests" est affiché) alors que j'efface les fils puis recharge la nouvelle liste...

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
private JTree tree;
 
...
 
public void refreshListOfTests() {
 
    DefaultTreeModel model = ((DefaultTreeModel) tree.getModel());
 
    // Remove the current children
    ((DefaultMutableTreeNode)model.getRoot()).removeAllChildren();
 
    DefaultMutableTreeNode reloadedTests = defineListOfTests();
 
    // Reload the new children
    model.reload(reloadedTests);
}
 
 
public DefaultMutableTreeNode defineListOfTests() {
    DefaultMutableTreeNode result = new DefaultMutableTreeNode("List of tests");
 
    String allTestsDir = "/tmp";
    File dir = new File(allTestsDir);
    File[] tests = dir.listFiles();
 
    for (int i = 0; i < tests.length; i++) {
        result.add(new DefaultMutableTreeNode(tests[i].getName()));
    }
 
    return result;
}