Comment lister l'arborescence des disque dur dans un jtree

Soyez le premier à donner votre avis sur cette source.

Snippet vu 35 708 fois - Téléchargée 25 fois

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

Ajouter un commentaire

Commentaires

cs_colo
Messages postés
3
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
5 juillet 2003
-
une petite correction : for (int j = 0 ; j < list.length ; j++)
^^
Voila sinon tout marche bien. :)
erfandis42
Messages postés
7
Date d'inscription
lundi 7 juillet 2003
Statut
Membre
Dernière intervention
17 juillet 2003
-
Ta source ma bcp aidé a comprendre mais je nage tjrs...
chuis noob sur java, et les tuto que j'ai vu sur le JTree sont pas clair du tout pour moi, deplus j'utilise Sun one, et pour ce composant c vraiment mal foutu !!! Tu pourrai me donner un exemple tout con, pour la création d'un arbre a afficher, avec des trucs bidons !?
erfandis42
Messages postés
7
Date d'inscription
lundi 7 juillet 2003
Statut
Membre
Dernière intervention
17 juillet 2003
-
Bon, alors j'arrive à faire mon noeud racine, à lui rajouter des fils (enfin je pense), mais au lieu de m'afficher mon arbre, il m'affiche plus rien !!!! (enfin c mieu que de m'afficher leur arbre exemple tout pouris, ki s'affiche meme quant tu as rien coder derriere...loul) Je comprend plus rien !!!!
erfandis42
Messages postés
7
Date d'inscription
lundi 7 juillet 2003
Statut
Membre
Dernière intervention
17 juillet 2003
-
C bon !!! En faite, c'était juste un probleme de portée de variable :op
Ne te tracasse po, ma variable dans laquel y'avait le modele du Jtree etait local à ma fonction, ca marchai po au debut, alors je l'avais redéclaré en général hihihi, alors qu'il y avait rien dedans.... lol
C'était donc normal qu'il ne m'affiche rien !!! :op
Encore desolé de t'avoir dérangé... bon code !
cs_genius83
Messages postés
1
Date d'inscription
dimanche 13 avril 2003
Statut
Membre
Dernière intervention
31 août 2003
-
C super ! Merci pour ton aide. J'essaierai et j'apporterai des remarks later.

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.