Accueil > > > ARBORESCENCE - DISQUE DUR - JTREE
ARBORESCENCE - DISQUE DUR - JTREE
Information sur la source
Description
Amélioration du code de FredRaid afin d’obtenir l’url du dossiers sélectionné avec un clic souri ou un enter du clavier. C’est peut-être utile pour quelqu'un ?
Source
- package FSoft;
-
- import java.lang.*;
- import java.io.*;
- import javax.swing.*;
- import javax.swing.tree.*;
- import java.awt.HeadlessException;
- import javax.swing.event.*;
- import java.awt.*;
- import java.awt.event.*;
- import java.util.Iterator;
-
- /**
- * @author Frederic FOURGEOT
- * @version 1.0
- */
-
- public class JTreeFolder extends JFrame {
-
- protected DefaultMutableTreeNode racine;
- protected JTree tree;
- protected JScrollPane scrollpane;
- final static int MAX_LEVEL = 1; // niveau max de descente "direct" dans l'arborescence
-
- /**
- * Sous-classe FSNode
- * @author Frederic FOURGEOT
- * @version 1.0
- */
- private class FSNode extends DefaultMutableTreeNode {
- File file; // contient le fichier lié au noeud
-
- /**
- * Constructeur non visible
- */
- private FSNode() {
- super();
- }
-
- /**
- * Constructeur par initialisation
- * @param userObject Object
- */
- FSNode(Object userObject) {
- super(userObject);
- }
-
- /**
- * Constructeur par initialisation
- * @param userObject Object
- * @param newFile File
- */
- FSNode(Object userObject, File newFile) {
- super(userObject);
- file = newFile;
- }
-
- /**
- * Definit le fichier lie au noeud
- * @param newFile File
- */
- public void setFile(File newFile) {
- file = newFile;
- }
-
- /**
- * Renvoi le fichier lie au noeud
- * @return File
- */
- public File getFile() {
- return file;
- }
- }
-
- /**
- * Constructeur
- * @throws HeadlessException
- */
- public JTreeFolder() throws HeadlessException {
- File[] drive;
- tree = new JTree();
-
- // création du noeud supérieur
- racine = new DefaultMutableTreeNode("Poste de travail");
-
- // création d'un noeud pour chaque lecteur
- drive = File.listRoots();
- for (int i = 0 ; i < drive.length ; i++) {
- FSNode node = new FSNode(drive[i], drive[i]);
- addFolder(drive[i], node); // on descend dans l'arborescence du lecteur jusqu'à MAX_LEVEL
- racine.add(node);
- }
-
- // Gestion d'evenement sur JTree (on écoute les evenements TreeExpansion)
- tree.addTreeExpansionListener(new TreeExpansionListener() {
- public void treeExpanded(TreeExpansionEvent e) {
- // lorsqu'un noeud est ouvert
- // on descend dans l'arborescence du noeud jusqu'à MAX_LEVEL
- TreePath path = e.getPath();
- FSNode node = (FSNode)path.getLastPathComponent();
- addFolder(node);
- ((DefaultTreeModel)tree.getModel()).reload(node); // on recharche uniquement le noeud
- }
- public void treeCollapsed(TreeExpansionEvent e) {
- // lorsqu'un noeud est refermé
- //RIEN
- }
- });
-
- tree.addMouseListener(new MouseListener (){
- /**
- * mouseClicked
- *
- * @param e MouseEvent
- */
- public void mouseClicked(MouseEvent e) {
- }
-
- /**
- * mouseEntered
- *
- * @param e MouseEvent
- */
- public void mouseEntered(MouseEvent e) {
- }
-
- /**
- * mouseExited
- *
- * @param e MouseEvent
- */
- public void mouseExited(MouseEvent e) {
- }
-
- /**
- * mousePressed
- *
- * @param e MouseEvent
- */
- public void mousePressed(MouseEvent e) {
- }
-
- /**
- * mouseReleased
- *
- * @param e MouseEvent
- */
- public void mouseReleased(MouseEvent e) {
- TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
- if (selPath != null) {
- System.out.println(selPath);
- }
- }
- });
-
-
- tree.addKeyListener(new KeyListener() {
- /**
- * keyPressed
- *
- * @param e KeyEvent
- */
- public void keyPressed(KeyEvent e) {
- }
-
- /**
- * keyReleased
- *
- * @param e KeyEvent
- */
- public void keyReleased(KeyEvent e) {
- if (e.getKeyCode() == e.VK_ENTER ) {
- TreePath selPath = tree.getSelectionPath();
- System.out.println(selPath);
- }
- }
-
- /**
- * keyTyped
- *
- * @param e KeyEvent
- */
- public void keyTyped(KeyEvent e) {
- }
- });
-
- // alimentation du JTree
- DefaultTreeModel model = new DefaultTreeModel(racine);
- tree.setModel(model);
-
-
- // ajout du JTree au formulaire
- scrollpane = new JScrollPane();
- getContentPane().add(scrollpane, BorderLayout.CENTER);
- scrollpane.getViewport().add(tree, null);
-
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- }
-
- /**
- * MAIN
- * @param arg
- */
- public static void main(String[] arg)
- {
- JTreeFolder Arbre = new JTreeFolder();
- Arbre.setTitle("Arborescence");
- Arbre.setSize(300,400);
- Arbre.setVisible(true);
- }
-
- /**
- * Recuperation des sous-elements d'un repertoire
- * @param driveOrDir
- * @param node
- */
- public void addFolder(File driveOrDir, DefaultMutableTreeNode node) {
- setCursor(new Cursor(3)); // WAIT_CURSOR est DEPRECATED
- addFolder(driveOrDir, node, 0);
- setCursor(new Cursor(0)); // DEFAULT_CURSOR est DEPRECATED
- }
-
- /**
- * Recuperation des sous-elements d'un repertoire
- * (avec niveau pour récursivité et arrêt sur MAX_LEVEL)
- * @param driveOrDir File
- * @param node DefaultMutableTreeNode
- * @param level int
- */
- private void addFolder(File driveOrDir, DefaultMutableTreeNode node, int level) {
- File[] fileList;
- fileList = driveOrDir.listFiles();
-
- if (fileList != null) {
- sortFiles(fileList); // on tri les elements
- }
-
- // on ne cherche pas plus loin que le niveau maximal définit
- if (level > MAX_LEVEL - 1) {return;}
-
- // pour chaque élément
- try {
- for (int i = 0; i < fileList.length; i++) {
- // en fonction du type d'élément
- if (fileList[i].isDirectory()) {
- // si c'est un répertoire on créé un nouveau noeud
- FSNode dir = new FSNode(fileList[i].getName(), fileList[i]);
- node.add(dir);
- // on recherche les éléments (récursivité)
- addFolder(fileList[i], dir, ++level);
- }
- /*
- if (fileList[i].isFile()) {
- // si c'est un fichier on ajoute l'élément au noeud
- node.add(new FSNode(fileList[i].getName(), fileList[i]));
- }
- */
- }
- }
- catch (NullPointerException e) {
- // rien
- }
- }
-
- /**
- * Recuperation des sous-elements d'un noeud
- * @param node
- */
- public void addFolder(FSNode node) {
- setCursor(new Cursor(3)); // WAIT_CURSOR est DEPRECATED
- for (int i = 0 ; i < node.getChildCount() ; i++) {
- addFolder(((FSNode)node.getChildAt(i)).getFile(), (FSNode)node.getChildAt(i));
- }
- setCursor(new Cursor(0)); // DEFAULT_CURSOR est DEPRECATED
- }
-
- /**
- * Tri une liste de fichier
- * @param listFile
- */
- public void sortFiles(File[] listFile) {
- triRapide(listFile, 0, listFile.length - 1);
- }
-
- /**
- * QuickSort : Partition
- * @param listFile
- * @param deb
- * @param fin
- * @return
- */
- private int partition(File[] listFile, int deb, int fin) {
- int compt = deb;
- File pivot = listFile[deb];
- int i = deb - 1;
- int j = fin + 1;
-
- while (true) {
- do {
- j--;
- } while (listFile[j].getName().compareToIgnoreCase(pivot.getName()) > 0);
- do {
- i++;
- } while (listFile[i].getName().compareToIgnoreCase(pivot.getName()) < 0);
- if (i < j) {
- echanger(listFile, i, j);
- } else {
- return j;
- }
- }
- }
-
- /**
- * Tri rapide : quick sort
- * @param listFile
- * @param deb
- * @param fin
- */
- private void triRapide(File[] listFile, int deb, int fin) {
- if (deb < fin) {
- int positionPivot = partition(listFile, deb, fin);
- triRapide(listFile, deb, positionPivot);
- triRapide(listFile, positionPivot + 1, fin);
- }
- }
-
- /**
- * QuickSort : echanger
- * @param listFile
- * @param posa
- * @param posb
- */
- private void echanger(File[] listFile, int posa, int posb) {
- File tmpFile = listFile[posa];
- listFile[posa] = listFile[posb];
- listFile[posb] = tmpFile;
- }
-
- }
package FSoft;
import java.lang.*;
import java.io.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.HeadlessException;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Iterator;
/**
* @author Frederic FOURGEOT
* @version 1.0
*/
public class JTreeFolder extends JFrame {
protected DefaultMutableTreeNode racine;
protected JTree tree;
protected JScrollPane scrollpane;
final static int MAX_LEVEL = 1; // niveau max de descente "direct" dans l'arborescence
/**
* Sous-classe FSNode
* @author Frederic FOURGEOT
* @version 1.0
*/
private class FSNode extends DefaultMutableTreeNode {
File file; // contient le fichier lié au noeud
/**
* Constructeur non visible
*/
private FSNode() {
super();
}
/**
* Constructeur par initialisation
* @param userObject Object
*/
FSNode(Object userObject) {
super(userObject);
}
/**
* Constructeur par initialisation
* @param userObject Object
* @param newFile File
*/
FSNode(Object userObject, File newFile) {
super(userObject);
file = newFile;
}
/**
* Definit le fichier lie au noeud
* @param newFile File
*/
public void setFile(File newFile) {
file = newFile;
}
/**
* Renvoi le fichier lie au noeud
* @return File
*/
public File getFile() {
return file;
}
}
/**
* Constructeur
* @throws HeadlessException
*/
public JTreeFolder() throws HeadlessException {
File[] drive;
tree = new JTree();
// création du noeud supérieur
racine = new DefaultMutableTreeNode("Poste de travail");
// création d'un noeud pour chaque lecteur
drive = File.listRoots();
for (int i = 0 ; i < drive.length ; i++) {
FSNode node = new FSNode(drive[i], drive[i]);
addFolder(drive[i], node); // on descend dans l'arborescence du lecteur jusqu'à MAX_LEVEL
racine.add(node);
}
// Gestion d'evenement sur JTree (on écoute les evenements TreeExpansion)
tree.addTreeExpansionListener(new TreeExpansionListener() {
public void treeExpanded(TreeExpansionEvent e) {
// lorsqu'un noeud est ouvert
// on descend dans l'arborescence du noeud jusqu'à MAX_LEVEL
TreePath path = e.getPath();
FSNode node = (FSNode)path.getLastPathComponent();
addFolder(node);
((DefaultTreeModel)tree.getModel()).reload(node); // on recharche uniquement le noeud
}
public void treeCollapsed(TreeExpansionEvent e) {
// lorsqu'un noeud est refermé
//RIEN
}
});
tree.addMouseListener(new MouseListener (){
/**
* mouseClicked
*
* @param e MouseEvent
*/
public void mouseClicked(MouseEvent e) {
}
/**
* mouseEntered
*
* @param e MouseEvent
*/
public void mouseEntered(MouseEvent e) {
}
/**
* mouseExited
*
* @param e MouseEvent
*/
public void mouseExited(MouseEvent e) {
}
/**
* mousePressed
*
* @param e MouseEvent
*/
public void mousePressed(MouseEvent e) {
}
/**
* mouseReleased
*
* @param e MouseEvent
*/
public void mouseReleased(MouseEvent e) {
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
if (selPath != null) {
System.out.println(selPath);
}
}
});
tree.addKeyListener(new KeyListener() {
/**
* keyPressed
*
* @param e KeyEvent
*/
public void keyPressed(KeyEvent e) {
}
/**
* keyReleased
*
* @param e KeyEvent
*/
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == e.VK_ENTER ) {
TreePath selPath = tree.getSelectionPath();
System.out.println(selPath);
}
}
/**
* keyTyped
*
* @param e KeyEvent
*/
public void keyTyped(KeyEvent e) {
}
});
// alimentation du JTree
DefaultTreeModel model = new DefaultTreeModel(racine);
tree.setModel(model);
// ajout du JTree au formulaire
scrollpane = new JScrollPane();
getContentPane().add(scrollpane, BorderLayout.CENTER);
scrollpane.getViewport().add(tree, null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
/**
* MAIN
* @param arg
*/
public static void main(String[] arg)
{
JTreeFolder Arbre = new JTreeFolder();
Arbre.setTitle("Arborescence");
Arbre.setSize(300,400);
Arbre.setVisible(true);
}
/**
* Recuperation des sous-elements d'un repertoire
* @param driveOrDir
* @param node
*/
public void addFolder(File driveOrDir, DefaultMutableTreeNode node) {
setCursor(new Cursor(3)); // WAIT_CURSOR est DEPRECATED
addFolder(driveOrDir, node, 0);
setCursor(new Cursor(0)); // DEFAULT_CURSOR est DEPRECATED
}
/**
* Recuperation des sous-elements d'un repertoire
* (avec niveau pour récursivité et arrêt sur MAX_LEVEL)
* @param driveOrDir File
* @param node DefaultMutableTreeNode
* @param level int
*/
private void addFolder(File driveOrDir, DefaultMutableTreeNode node, int level) {
File[] fileList;
fileList = driveOrDir.listFiles();
if (fileList != null) {
sortFiles(fileList); // on tri les elements
}
// on ne cherche pas plus loin que le niveau maximal définit
if (level > MAX_LEVEL - 1) {return;}
// pour chaque élément
try {
for (int i = 0; i < fileList.length; i++) {
// en fonction du type d'élément
if (fileList[i].isDirectory()) {
// si c'est un répertoire on créé un nouveau noeud
FSNode dir = new FSNode(fileList[i].getName(), fileList[i]);
node.add(dir);
// on recherche les éléments (récursivité)
addFolder(fileList[i], dir, ++level);
}
/*
if (fileList[i].isFile()) {
// si c'est un fichier on ajoute l'élément au noeud
node.add(new FSNode(fileList[i].getName(), fileList[i]));
}
*/
}
}
catch (NullPointerException e) {
// rien
}
}
/**
* Recuperation des sous-elements d'un noeud
* @param node
*/
public void addFolder(FSNode node) {
setCursor(new Cursor(3)); // WAIT_CURSOR est DEPRECATED
for (int i = 0 ; i < node.getChildCount() ; i++) {
addFolder(((FSNode)node.getChildAt(i)).getFile(), (FSNode)node.getChildAt(i));
}
setCursor(new Cursor(0)); // DEFAULT_CURSOR est DEPRECATED
}
/**
* Tri une liste de fichier
* @param listFile
*/
public void sortFiles(File[] listFile) {
triRapide(listFile, 0, listFile.length - 1);
}
/**
* QuickSort : Partition
* @param listFile
* @param deb
* @param fin
* @return
*/
private int partition(File[] listFile, int deb, int fin) {
int compt = deb;
File pivot = listFile[deb];
int i = deb - 1;
int j = fin + 1;
while (true) {
do {
j--;
} while (listFile[j].getName().compareToIgnoreCase(pivot.getName()) > 0);
do {
i++;
} while (listFile[i].getName().compareToIgnoreCase(pivot.getName()) < 0);
if (i < j) {
echanger(listFile, i, j);
} else {
return j;
}
}
}
/**
* Tri rapide : quick sort
* @param listFile
* @param deb
* @param fin
*/
private void triRapide(File[] listFile, int deb, int fin) {
if (deb < fin) {
int positionPivot = partition(listFile, deb, fin);
triRapide(listFile, deb, positionPivot);
triRapide(listFile, positionPivot + 1, fin);
}
}
/**
* QuickSort : echanger
* @param listFile
* @param posa
* @param posb
*/
private void echanger(File[] listFile, int posa, int posb) {
File tmpFile = listFile[posa];
listFile[posa] = listFile[posb];
listFile[posb] = tmpFile;
}
}
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
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
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
jtree + recuper le nom de variable d'un noeud [ par fraisa1985 ]
Salut a tous ,comment je peux recuperer le nom de varaible d'un noeud d'une jtree aprés le clic sur cette noeud.Je sais qu'il y-a la méthode setuserob
Jtree et base de données [ par idris5 ]
Bonjour,J'aimerai recuperer les données d'une base Mysql dans un Jtree avec checkbox mais je ne vois pas trop comment faire?!J'ai deja tenté de le fai
Probleme affichage Jtree [ par idris5 ]
Bonjour, je développe actuellement une application qui doit récupérer des données dans une base mysql et afficher le tout sous forme de Jtree avec des
Jtree; explorateur windows et NetBeans [ par loics38 ]
Bonjour,Je travaille sou NetBeans et via l'outil graphique j'essaie de me faire un explorateur windows. J'ai donc ma classe où se trouve le Jtree, j'a
Problème utilisation jtree [ par Fredoxmm ]
bonjour,je réalise pour une appli, une petite gestion d'explorateur de fichier. L'utilsiateur choisi grace à un chooser un dossier, et cela est censé
JFileChooser - arborescence [ par neptunes31 ]
Bonjour, Je cherche des renseignements sur le widget JFileChooser. J 'utilise FileSystemView pour lui indiquer dans quel dossier la fenêtre de recherc
JTree [ par coltman ]
Bonjour à tous,comme le titre l'indique je suis à la recherche d'informations (pertinentes) concernant le composant JTree et le moyen de le manipuler.
supprimer un noeud d'un jtree [ par pseudo85 ]
Bonjour,Je désire supprimer un noeud dans un jTree. J'utilise pour cela le code suivant: DefaultMutableTreeNode nodeName = (DefaultMutableTre
|
Derniers Blogs
TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice CRéATION D'UNE BASE DE DONNéE SOUS SQL AZURECRéATION D'UNE BASE DE DONNéE SOUS SQL AZURE par junarnoalg
Sans rentrer dans les détails, je me propose ici de faire un rapide tour de ce que propose SQL Azure.
SQL Azure est avant tout un service d'hébergement de base de données relationnelles construit sur SQL Server. Il permet aux entreprises d...
Cliquez pour lire la suite de l'article par junarnoalg TECHDAYS PARIS 2010 : LES SERVICES D'APPLICATIONS DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LES SERVICES D'APPLICATIONS DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Xavier Moreels et Julien Bakmezdjian Ce sujet est lié au partage des applications comme services dans SharePoint 2010, ceci représente la possibilité de créer sa propre application qui sera utilisable comme ceux en standard : Search...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
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
|