Accueil > > > [JTREE] ARBORESSANCE D'UN DISQUE DUR SIMPLE ET RAPIDE
[JTREE] ARBORESSANCE D'UN DISQUE DUR SIMPLE ET RAPIDE
Information sur la source
Description
Bonjour, Ce code à été réalisé par un de mes collègue qui m'aide sur un projet. C'est donc à lui que revient tout le mérite, et il en a! donc ce Code permet de créer une arboressance rapidement à partir des fichier contenu sur le disque. Je dis rapide, car le programme ne scanne pas tout le disque, c'est seulement lorsque vous allez déplier un répertoire qu'il va aller lister son contenu. Sur ce amusez vous bien.
Source
- Class : MainWindow
- Code:
- /*
- * Created on 9 mars 2005
- *Ceci est la class contenant l'interface graphique
- *C'est ici que tout ce joue! ;p
- *
- */
- package mwt.waldo;
-
- import java.awt.BorderLayout;
-
- import javax.swing.Box;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JScrollPane;
- import javax.swing.JTree;
- import javax.swing.tree.DefaultTreeModel;
- /**
- * @author Waldo2188
- *
- */
- public class MainWindow extends JFrame {
-
- private static final long serialVersionUID = 1L;
- private JTree myTree;
- private DefaultTreeModel MyDefaultTree;
-
- public MainWindow(){
- //titre de l'application
- super("Explorateur");
- //initialisation des composants
- initComponent();
- }
-
- private void initComponent() {
- //arrete l'application java lorsque lon 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
- //MyTreeModel est une classe qui hérite de DefaultTreeModel
- MyDefaultTree = new MyTreeModel();
- myTree = new JTree(MyDefaultTree);
-
- //Ajout de l'arboressenece lorsqu'un répertoire est ouvert
- myTree.addTreeExpansionListener(new myExpensionListener());
-
- //Sélection d'une feuille
- myTree.addTreeSelectionListener(new myTreeSelectionListener());
-
- //Instantiation de La Class JScrollPanne afin de pouvoir bénéficier des ascenceur.
- JScrollPane scrollPane = new JScrollPane(myTree);
-
- getContentPane().add(scrollPane,BorderLayout.CENTER);
-
- Box myJp = Box.createVerticalBox();
- myJp.add(Box.createGlue());
-
- //Ajout d'un label
- JLabel myJl = new JLabel();
- myJl.setText("Fichier Sélectionné :");
- myJp.add(myJl);
-
-
- setSize(600,400);
-
- setVisible(true);
-
- }
- public static void main(String[] args) {
- //instanciation de la fenêtre
- new MainWindow();
- }
-
- public JTree getMyTree() {
- return myTree;
- }
- public void setMyTree(JTree myTree) {
- this.myTree = myTree;
- }
-
-
- public void Close(){
- dispose();
- }
-
- public DefaultTreeModel getMyDefaultTree() {
- return MyDefaultTree;
- }
- }
-
-
- Class : myExpensionListener
- Code:
- /*
- * Class myExpensionListener
- *Ici on effectue une action lorsqu'un répertoire est déplié!
- *
- */
- package mwt.waldo;
-
- import javax.swing.JTree;
- import javax.swing.event.TreeExpansionEvent;
- import javax.swing.event.TreeExpansionListener;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeModel;
-
-
- public class myExpensionListener implements TreeExpansionListener {
-
- /**
- * Constructeur de la Class
- */
- public myExpensionListener() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- //S'exécute lorsque lorsque qu'un dossier est ouvert
- public void treeExpanded(TreeExpansionEvent arg0) {
- //Appele de la fonction addChildren de la classe TreeUtil
- //Elle demande en paramètre DefaultTreeModel, DefaultMutableTreeNode
- TreeUtil.addChildren((DefaultTreeModel)((JTree)arg0.getSource()).getModel(),(DefaultMutableTreeNode)arg0.getPath().getLastPathComponent());
- }
- /*getSource est une Instance de JTree, ce qui va nous permetre de pouvoir utiliser getModel qui retourne un TreeModel
- * qui lui pourras être casté en DefaultTreeModel.
- * getPath donne le chemin complet du répertoire ouvert depuis la racine.
- * getLastPathComponent retourne le nom du dernier répertoire
- */
-
- //on n'effectue aucune action lorsque qu'un répertoire est fermé
- public void treeCollapsed(TreeExpansionEvent arg0) {
-
-
- }
-
- }
-
-
- Class MyFile :
- Code:
-
- package mwt.waldo;
-
- import java.io.File;
-
- public class MyFile extends File {
-
- /**
- * @param arg0
- */
- public MyFile(String arg0) {
- super(arg0);
- }
-
- public String toString() {
- return getName();
- }
- }
-
-
-
-
- Class MyTreeModel :
- Code:
-
- package mwt.waldo;
-
- import java.io.File;
-
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeModel;
-
-
- public class MyTreeModel extends DefaultTreeModel {
-
- /**
- *
- */
- public MyTreeModel() {
- //création du premier neux
-
- super(new DefaultMutableTreeNode(new MyFile("C:\\")));
-
- // Appele de la fonction addChildren de la classe TreeUtil
- //Elle demande en paramètre DefaultTreeModel, DefaultMutableTreeNode
- TreeUtil.addChildren(this,(DefaultMutableTreeNode)getRoot());
- /*
- * This représente cette class
- * getRoot est une méthode de la classe DefaultTreeModel
- */
- }
-
-
-
- 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()
- */
- }
- }
-
-
-
- Class myTreeSelectionListener :
- Code:
-
- package mwt.waldo;
-
- import java.awt.Component;
- import java.io.File;
-
- import javax.swing.event.TreeSelectionEvent;
- import javax.swing.event.TreeSelectionListener;
- import javax.swing.tree.DefaultMutableTreeNode;
-
-
- import java.awt.Component;
- import java.io.File;
-
- import javax.swing.event.TreeSelectionEvent;
- import javax.swing.event.TreeSelectionListener;
- import javax.swing.tree.DefaultMutableTreeNode;
-
- /**
- * @author G909248
- *
- * TODO To change the template for this generated type comment go to
- * Window - Preferences - Java - Code Style - Code Templates
- */
- public class myTreeSelectionListener implements TreeSelectionListener {
-
- public myTreeSelectionListener(){
- super();
- }
- /* (non-Javadoc)
- * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
- */
- public void valueChanged(TreeSelectionEvent arg0) {
-
- DefaultMutableTreeNode f = (DefaultMutableTreeNode) arg0.getPath().getLastPathComponent();
- File ff = (File) f.getUserObject();
-
- MainWindow mainWindow = (MainWindow) javax.swing.SwingUtilities.windowForComponent((Component)arg0.getSource());
-
- if(!ff.isDirectory()){
- //action si ca n'est pas un répertoire
- }else{
- //action si c'est un répertoire
- }
-
- System.out.println(ff.isDirectory());
- System.out.println(ff.getAbsolutePath());
-
- }
-
-
-
-
- }
-
-
-
- Class TreeUtil :
- Code:
-
- package mwt.waldo;
-
- import java.io.File;
-
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeModel;
-
- public class TreeUtil {
- /**
- *
- */
- 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 neux dans le treeModel
- treeModel.insertNodeInto(new DefaultMutableTreeNode(new MyFile(children[i].getAbsolutePath())),parentNode,x);
- /*MyFile est une classe qui hérite de File
- * new MyFile(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++;
- }
- }
- //On crée les fichiers
- for(int i=0;i<children.length;i++){
- if(!children[i].isDirectory()){
- treeModel.insertNodeInto(new DefaultMutableTreeNode(new MyFile(children[i].getAbsolutePath())),parentNode,x);
- x++;
- }
- }
- }
- }
Class : MainWindow
Code:
/*
* Created on 9 mars 2005
*Ceci est la class contenant l'interface graphique
*C'est ici que tout ce joue! ;p
*
*/
package mwt.waldo;
import java.awt.BorderLayout;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeModel;
/**
* @author Waldo2188
*
*/
public class MainWindow extends JFrame {
private static final long serialVersionUID = 1L;
private JTree myTree;
private DefaultTreeModel MyDefaultTree;
public MainWindow(){
//titre de l'application
super("Explorateur");
//initialisation des composants
initComponent();
}
private void initComponent() {
//arrete l'application java lorsque lon 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
//MyTreeModel est une classe qui hérite de DefaultTreeModel
MyDefaultTree = new MyTreeModel();
myTree = new JTree(MyDefaultTree);
//Ajout de l'arboressenece lorsqu'un répertoire est ouvert
myTree.addTreeExpansionListener(new myExpensionListener());
//Sélection d'une feuille
myTree.addTreeSelectionListener(new myTreeSelectionListener());
//Instantiation de La Class JScrollPanne afin de pouvoir bénéficier des ascenceur.
JScrollPane scrollPane = new JScrollPane(myTree);
getContentPane().add(scrollPane,BorderLayout.CENTER);
Box myJp = Box.createVerticalBox();
myJp.add(Box.createGlue());
//Ajout d'un label
JLabel myJl = new JLabel();
myJl.setText("Fichier Sélectionné :");
myJp.add(myJl);
setSize(600,400);
setVisible(true);
}
public static void main(String[] args) {
//instanciation de la fenêtre
new MainWindow();
}
public JTree getMyTree() {
return myTree;
}
public void setMyTree(JTree myTree) {
this.myTree = myTree;
}
public void Close(){
dispose();
}
public DefaultTreeModel getMyDefaultTree() {
return MyDefaultTree;
}
}
Class : myExpensionListener
Code:
/*
* Class myExpensionListener
*Ici on effectue une action lorsqu'un répertoire est déplié!
*
*/
package mwt.waldo;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class myExpensionListener implements TreeExpansionListener {
/**
* Constructeur de la Class
*/
public myExpensionListener() {
super();
// TODO Auto-generated constructor stub
}
//S'exécute lorsque lorsque qu'un dossier est ouvert
public void treeExpanded(TreeExpansionEvent arg0) {
//Appele de la fonction addChildren de la classe TreeUtil
//Elle demande en paramètre DefaultTreeModel, DefaultMutableTreeNode
TreeUtil.addChildren((DefaultTreeModel)((JTree)arg0.getSource()).getModel(),(DefaultMutableTreeNode)arg0.getPath().getLastPathComponent());
}
/*getSource est une Instance de JTree, ce qui va nous permetre de pouvoir utiliser getModel qui retourne un TreeModel
* qui lui pourras être casté en DefaultTreeModel.
* getPath donne le chemin complet du répertoire ouvert depuis la racine.
* getLastPathComponent retourne le nom du dernier répertoire
*/
//on n'effectue aucune action lorsque qu'un répertoire est fermé
public void treeCollapsed(TreeExpansionEvent arg0) {
}
}
Class MyFile :
Code:
package mwt.waldo;
import java.io.File;
public class MyFile extends File {
/**
* @param arg0
*/
public MyFile(String arg0) {
super(arg0);
}
public String toString() {
return getName();
}
}
Class MyTreeModel :
Code:
package mwt.waldo;
import java.io.File;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class MyTreeModel extends DefaultTreeModel {
/**
*
*/
public MyTreeModel() {
//création du premier neux
super(new DefaultMutableTreeNode(new MyFile("C:\\")));
// Appele de la fonction addChildren de la classe TreeUtil
//Elle demande en paramètre DefaultTreeModel, DefaultMutableTreeNode
TreeUtil.addChildren(this,(DefaultMutableTreeNode)getRoot());
/*
* This représente cette class
* getRoot est une méthode de la classe DefaultTreeModel
*/
}
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()
*/
}
}
Class myTreeSelectionListener :
Code:
package mwt.waldo;
import java.awt.Component;
import java.io.File;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.Component;
import java.io.File;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
/**
* @author G909248
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class myTreeSelectionListener implements TreeSelectionListener {
public myTreeSelectionListener(){
super();
}
/* (non-Javadoc)
* @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
*/
public void valueChanged(TreeSelectionEvent arg0) {
DefaultMutableTreeNode f = (DefaultMutableTreeNode) arg0.getPath().getLastPathComponent();
File ff = (File) f.getUserObject();
MainWindow mainWindow = (MainWindow) javax.swing.SwingUtilities.windowForComponent((Component)arg0.getSource());
if(!ff.isDirectory()){
//action si ca n'est pas un répertoire
}else{
//action si c'est un répertoire
}
System.out.println(ff.isDirectory());
System.out.println(ff.getAbsolutePath());
}
}
Class TreeUtil :
Code:
package mwt.waldo;
import java.io.File;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class TreeUtil {
/**
*
*/
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 neux dans le treeModel
treeModel.insertNodeInto(new DefaultMutableTreeNode(new MyFile(children[i].getAbsolutePath())),parentNode,x);
/*MyFile est une classe qui hérite de File
* new MyFile(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++;
}
}
//On crée les fichiers
for(int i=0;i<children.length;i++){
if(!children[i].isDirectory()){
treeModel.insertNodeInto(new DefaultMutableTreeNode(new MyFile(children[i].getAbsolutePath())),parentNode,x);
x++;
}
}
}
}
Conclusion
Pour utiliser ce code, créer un nouveau projet, puis créer chaque classe présenté dans le code, celle ci devrons porté le nom qui leur est donnée!
Historique
- 21 mars 2005 10:22:28 :
- Petite mise au point du code et création d'un fichier Zip
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
JTree [ par Never_Summer ]
Bonjour,Voila, mon problème est simple, j'aimerai implémenter un treeview dans un de mes panel.Ce treeview sera dynamique et les noeud devro
sauvegarde/chargement d'un jtree [ par DamS2502 ]
Bonjour, j'aurais besoin de pouvoir sauvegarder l'arborescence d'un jtree puis de la recharger par la suite. Le problème est que je n'ai aucune idée d
Arborescence d'un disque dans une fenêtre [ par foudejava ]
Bonjour,je souhaite réaliser l'arborescence de mon disque ( sous forme Windows avec répertoires, sous_répertoires et fichiers ) le tout dans une fenêt
URGENT : problème de sélection dans un JTree [ par terminagroo ]
Bonjour,Voilà j'ai créé une arborescence de fichiers qui fonctionne plutôt bien (un JTree). Mais mon problème est que lorsque
Accès disque par élément Swing [ par sehenokely ]
Salut ! Est-ce que quelqu'un sait comment faire un bouton "parcourir" pour récupérer une URL et la mettre dans un champ de saisie genre JTex
Jtree et affichage de fils sur noeud expand [ par FRAJA ]
Bonjour,j'ai un Jtree dans JScrollPane.//je résume// je réalise une sélection de mon noeud avec la souris._current = (DefaultMutab
Lister les répertoires sur un site ftp [ par roots74 ]
j'ai une class qui me permet de voir mon arborescence locale dans une list. Je voudrais m'en servir pour afficher l'arborescence d'un site ftp. Commen
Jtree [ par sheorogath ]
bonjour,g fait un arbre qui me permetté de naviguer dans l'arborescence de mon disque duret apres avoir eplucher la doc de sun pour les arbreje n
jtree [ par KERKENNAH ]
slt;s.v.p je suis un etudiant et j'ai besoin d'aide c tres urgent ;en fait je veux developpez une application qui contient un jtree et à chaque c
vb.net (treeview) [ par amadnane2000 ]
bonjourje suis entraine de realiser un grand projet avec vb.net,et je me suis obligé d'utilisé le controle treeview parce que j'ai boucoup d
|
Derniers Blogs
MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SQLRE : SQL par Julien39
Cliquez pour lire la suite par Julien39
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|