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
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice 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
Forum
RE : CODE GéNéRé RE : CODE GéNéRé par Julien39
Cliquez pour lire la suite par Julien39 RE : CODE GéNéRé RE : CODE GéNéRé 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
|