Problème reload sur DefaultTreeModel
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... :rouleau:
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:
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;
} |