Bonjour,
J'essaye depuis plusieurs jours de créer une arborescence de façon dynamique et là, je désespère. Je m'explique. J'ai réussi à construire une arborescence représentant les dossiers et fichiers présents sur mon ordinateur mais cette arborescence se charge entièrement au lancement de l'application, se qui pause problème pour les ordinateurs bien remplis. Je souhaiterai pouvoir charger la racine de mon système et seulement lorsque je sélectionne un des dossier, charger et afficher dans mon arbre, les dossier et fichier qu'il comporte.
Voici mon code :
Merci d'avance à ceux qui pourraient m'aider.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 import java.io.File; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; public class essai extends JFrame { // private static final String Boolean = null; private JTree arbre; private DefaultMutableTreeNode racine; public essai(){ this.setSize(300, 300); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("Les arbres"); //On invoque la méthode de construction de notre arbre listRoot(); this.setVisible(true); } private void listRoot(){ this.racine = new DefaultMutableTreeNode(); int count = 0; for(File file : File.listRoots()) { DefaultMutableTreeNode lecteur = new DefaultMutableTreeNode(file.getAbsolutePath()); try { for(File nom : file.listFiles()){ DefaultMutableTreeNode node = new DefaultMutableTreeNode(nom.getName()+"\\"); lecteur.add(this.listFile(nom, node)); } } catch (NullPointerException e) {} this.racine.add(lecteur); //Si nous avons parcouru plus de 50 dossiers, on sort //if(count > 50) {break;} } //On crée, avec notre hiérarchie, un arbre arbre = new JTree(this.racine); arbre.setRootVisible(false); //Que nous plaçons sur le ContentPane de notre JFrame à l'aide d'un scroll this.getContentPane().add(new JScrollPane(arbre)); } private DefaultMutableTreeNode listFile(File file, DefaultMutableTreeNode node){ int count = 0; if(file.isFile()) return new DefaultMutableTreeNode(file.getName()); else{ for(File nom : file.listFiles()){ count++; //pas plus de 5 enfants par noeud if(count < 20){ DefaultMutableTreeNode subNode; if(nom.isDirectory()){ subNode = new DefaultMutableTreeNode(nom.getName()+"\\"); node.add(this.listFile(nom, subNode)); }else{ subNode = new DefaultMutableTreeNode(nom.getName()); } node.add(subNode); } } return node; } } public static void main(String[] args){ essai fen = new essai(); } } */
Partager