Comment lister l'arborescence des disque dur dans un jtree

Contenu du snippet

Cette source sert a générer la partie gauche de l explorateur windows ;)
la partie droite viendra apres !!!

Source / Exemple :


import java.awt.Dimension;
import java.io.File;
import javax.swing.*;
import javax.swing.tree.*;

/**

  • Classe permettant d afficher l'arborescence des disque dur
  • /
public class Explorer extends JFrame { private File[] _roots; private JTree _dirs; public Explorer() { // 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) { Explorer ex = new Explorer(); ex.setVisible(true); } }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.