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
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
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
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
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Forum
AIDE TALEAU JAVAAIDE TALEAU JAVA par ziliass
Cliquez pour lire la suite par ziliass
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|