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
| import java.awt.Dimension;
import java.io.File;
import javax.swing.*;
import javax.swing.tree.*;
public class A extends JFrame
{
private File[] _roots;
private JTree _dirs;
public A()
{
// taille de la fenetre
setSize(500,500);
// on recupère les lecteurs
_roots = File.listRoots();
// on définit notre premier noeud
DefaultMutableTreeNode racine = new DefaultMutableTreeNode("Poste de travail",true);
// Création du jtree
_dirs = new JTree(racine);
_dirs.setSize(1000,500);
// pour chaque lecteur
for (int i = 1 ; i<_roots.length ; i++)
{
// on recupère son contenu grace a getSubDirs
DefaultMutableTreeNode root = getSubDirs(_roots[i]);
// et on l ajoute a notre premier noeud
racine.add(root);
}
// on met le jtree dans un jscrollpane
JScrollPane scroll = new JScrollPane(_dirs);
scroll.setPreferredSize(new Dimension(600,600));
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
// on ajoute notre jscrollpane
getContentPane().add(scroll);
}
/**
* Méthode récursive permettant de récupérer
* tous les fichiers et sous dossiers d un autre
* @param root un File qui représente le lecteur ou le repertoire de départ
* @return DefaultMutableTreeNode
*/
public DefaultMutableTreeNode getSubDirs(File root)
{
// on créé un noeud
DefaultMutableTreeNode racine = new DefaultMutableTreeNode(root,true);
// on recupère la liste des fichiers et sous rep
File[] list = root.listFiles();
if ( list != null)
{
// pour chaque sous rep on appel cette methode => recursivité
for (int j = 1 ; j<list.length ; j++)
{
DefaultMutableTreeNode file = null;
if (list[j].isDirectory())
{ file = getSubDirs(list[j]);
racine.add(file);
}
}
}
return racine;
}
//main
public static void main(String[] args)
{
A ex = new A();
ex.setVisible(true);
}
} |