bonjours,

J'ai recrée la partie gauche de l'explorateur windows en utilisant un JTree, un FileSystemView et des File. Mon probleme est le suivant, lorsque j'affiche mon JTree c'est le chemin absolut des dossiers qui s'affiche.
Exemple : C:\Documents and Settings\User\Bureau

Et j'aimerai qu'il ne s'affiche que le nom du dossier
Or si je passe en parametre seulement le nom du dossier en utilisant la fonction getName() de File a mon Jtree, il ne s'affiche bien que le nom mais je ne peut plus deroulé mes dossiers car le programme considere ce que je lui passe comme des feuilles et pas comme des noeuds de mon arbre.

Quelqu'un peut t'il m'aider?

Je join une partie de mon code
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
 
/*
 * Created on 25 mai 2006
 * Ceci est la class contenant l'interface graphique
 * de l'explorer
 *
 */
 
package explorer;
 
import java.awt.BorderLayout;
import java.io.File;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.filechooser.FileSystemView;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
 
public class ExplWindow extends JFrame {
 
	private static final long serialVersionUID = 1L;
	public JTree tree;
	public DefaultTreeModel defaultTree;
	public JButton valid;
 
	/**
         * constructeur de la classe qui met en place une fenetre contenant
         * un arbre representant l'arborescence de l'ordinateur.
         * Cette arborescence commence au homeDirectory de l'ordinateur
         * sur windows cela correspond au bureau
         *
         */
	public ExplWindow(){
		//titre de l'application
		super("Explorateur");
 
		//initialisation des composants
		initComponent();
	}
	private void initComponent() {
		//arrete l'application java lorsque l'on quite la fenètre, mais le thread lancé continu son office
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 
 
		/**************************************************************
                 * Instanciation de la Class Jtree
                 * On passe en paramètre un Model
                 * ExpltreeModel est une classe qui hérite de DefaultTreeModel
                 **************************************************************/
 
		//on recupere le homeDirectory
		FileSystemView vueSytem = FileSystemView.getFileSystemView();
		File home = vueSytem.getHomeDirectory();
 
		//on récupere les lecteurs
		File[] roots = File.listRoots();
 
		//on crée le model
		defaultTree = new ExplTreeModel(home);
 
		//on ajoute les lecteurs à l'arbre
		for (int i = 0; i < roots.length; ++i){
			DefaultMutableTreeNode lecteur = new DefaultMutableTreeNode(roots[i]);
			defaultTree.insertNodeInto(lecteur, (DefaultMutableTreeNode) defaultTree.getRoot(), defaultTree.getChildCount(defaultTree.getRoot()));
		}
		//on ajoute les documents partagés
		DefaultMutableTreeNode DocPartagés = new DefaultMutableTreeNode(new File(roots[0]+"Documents and Settings\\All Users\\Documents"));
		defaultTree.insertNodeInto(DocPartagés, (DefaultMutableTreeNode) defaultTree.getRoot(), defaultTree.getChildCount(defaultTree.getRoot()));
 
		//on crée l'arbre
		tree = new JTree(defaultTree);
 
		//Ajout de l'arborescence lorsqu'un répertoire est ouvert
		tree.addTreeExpansionListener(new ExplExpendListener());
 
		//Sélection d'une feuille
		tree.addTreeSelectionListener(new ExplTreeSelectionListener());
 
		//Instantiation de la class JScrollPanne afin de pouvoir bénéficier des ascenceurs.      
		JScrollPane scrollPane = new JScrollPane(tree);
		getContentPane().add(scrollPane,BorderLayout.CENTER);
 
		//on ajoute le bouton ouverture
		valid = new JButton("Valider");
		JPanel pValid = new JPanel();
		pValid.add(valid);
		getContentPane().add(pValid, BorderLayout.SOUTH);
 
		//lors d'un clic sur valider de l'explorateur on recupere
		//le chemin du dossier selectionner
 
		//Affichage de la fenetre
		setSize(600,400);
		setLocationRelativeTo(getParent());
		setVisible(true);
	}
 
	public static void main(String[] args) {
		//instanciation de la fenêtre
		new ExplWindow();
	}//main
 
	/**
         * 
         * @return l'arbre contenant l'arborescence de l'ordinateur
         */
	public JTree getTree() {
		return tree;
	}//getTree()
 
	/**
         * 
         * @param tree l'arbre dont on desire qu'il contienne l'arborescence de l'ordinateur
         */
	public void setTree(JTree tree) {
		this.tree = tree;
	}//setTree()
 
	/**
         * ferme la fenetre
         *
         */
	public void Close(){
		dispose();
	}//Close()
 
	/**
         * 
         * @return le model sur lequel l'arbre contenant l'arborescence de l'ordinateur
         * est contruit
         */
	public DefaultTreeModel getDefaultTree() {
		return defaultTree;
	}//getDefaultTree()
 
}//class MainWindows
 
 
package explorer;
 
import java.io.File;
 
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
 
 
public class ExplTreeModel extends DefaultTreeModel {
 
	/**
         * 
         */
	private static final long serialVersionUID = 1L;
 
	/**
         * 
         * @param file le fichier a partir duquel on demarre l'arborescence
         */
	public ExplTreeModel(File file) {
		//création du premier noeud
		super(new DefaultMutableTreeNode(file));
 
		//Appel de la fonction addDirectory de la classe TreeUtil
		//Elle demande en paramètre DefaultTreeModel, DefaultMutableTreeNode
		TreeUtil.addDirectory(this,(DefaultMutableTreeNode)getRoot());
 
		/*
		 * This représente cette class
		 * getRoot est une méthode de la classe DefaultTreeModel
		 */
	}//ExplTreeModel
 
	/**
         * @return si le fichier est un répertoire
         */
	public boolean isLeaf(Object arg0) {
		return !((File)((DefaultMutableTreeNode)arg0).getUserObject()).isDirectory();
 
		/*
		 * isLeaf permet de savoir si l'objet passé en paramètre est une feuille ou non.
		 * Et ici on va testé si cette objet est un répertoire ou non
		 * on caste notre argument en File afin d'utiliser la methode isDirectory()
		 */
	}//IsLeaf
 
}//Class ExplTreeModel
 
 
 
package explorer;
 
import java.io.File;
 
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
 
public class TreeUtil {
	/**
         * 
         * @param treeModel  l'arbre auquel on doit ajouté des repertoires
         * @param parentNode  le dossier auquel sont liée les repertoires
         */
	/*
	 * on ajoutes les repertoires et les fichiers
	 */
	protected static void addChildren(DefaultTreeModel treeModel,DefaultMutableTreeNode parentNode) {
		//Création d'un Fichier avec le nom du répertoire ouvert
		File selectedFile = (File)parentNode.getUserObject();
 
		//on supprime tout les enfants du répertoire ouvert
		parentNode.removeAllChildren();
 
		//On informe le treeModel que sa Structure à changé
		treeModel.nodeStructureChanged(parentNode);
 
		//Listage du répertoire
		File[] children = selectedFile.listFiles();
		int x = 0;
 
		//On crée en premier les répertoire
		for(int i=0;i<children.length;++i){
			if(children[i].isDirectory()){
				//On insert de nouveaux noeud dans le treeModel
				treeModel.insertNodeInto(new DefaultMutableTreeNode(new File(children[i].getAbsolutePath())),parentNode,x);
 
				/*
				 * new File(children[i].getAbsolutePath())) on crée un fichier avec le chemin complet des fichiers qui on été listé.
				 * Et grâce a ce chemin complet on va pouvoir créer un DefaultMutableTreeNode
				 *             
				 */
				++x;
			}
		}//for des repertoires
 
		//On crée les fichiers
		for(int i=0;i<children.length;++i){
			if(!children[i].isDirectory()){
				treeModel.insertNodeInto(new DefaultMutableTreeNode(new File(children[i].getAbsolutePath())),parentNode,x);
				++x;
			}
 
		}//for des fichiers
	}//add Children
 
	/**
         * 
         * @param treeModel  l'arbre auquel on doit ajouté des repertoires
         * @param parentNode  le dossier auquel sont liée les repertoires
         */
	/*
	 * n'ajoute que des repertoires
	 */
	protected static void addDirectory(DefaultTreeModel treeModel,DefaultMutableTreeNode parentNode) {
 
		//Création d'un fichier avec le nom du répertoire ouvert
		File selectedFile = (File)parentNode.getUserObject();
 
		//on supprime tout les enfants du répertoire ouvert
		parentNode.removeAllChildren();
 
		//On informe le treeModel que sa Structure à changé
		treeModel.nodeStructureChanged(parentNode);
 
		//Listage du répertoire
		File[] children = selectedFile.listFiles();
		int x = 0;
 
		//On crée les répertoires
		for(int i=0;i<children.length;++i){
			if(children[i].isDirectory()){
				//On insere de nouveaux noeud dans le treeModel
				treeModel.insertNodeInto(new DefaultMutableTreeNode(new File(children[i].getAbsolutePath())),parentNode,x);
 
				/*
				 * new File(children[i].getAbsolutePath())) on crée un fichier avec le chemin complet des fichiers qui on été listé.
				 * Et grâce a ce chemin complet on va pouvoir créer un DefaultMutableTreeNode
				 *             
				 */
				++x;
			}
		}//for des repertoires
	}//addDirectory
 
}//class TreeUtil