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; }
Partager