begin process at 2012 02 10 19:30:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Swing

 > ARBORESCENCE - DISQUE DUR - JTREE

ARBORESCENCE - DISQUE DUR - JTREE


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Swing Classé sous :arborescence, disques, jtree Niveau :Débutant Date de création :14/09/2005 Vu / téléchargé :16 400 / 1 148

Auteur : grand_jeanluc

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 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;
  }

}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   JTreeFolder-clic3
    • JTreeFolder-clic3.jpx~
    •   src
      •   FSoft
        • JTreeFolder.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier8 416 octets
        • JTreeFolder.java~1~Télécharger ce fichier [Réservé aux membres club]3 087 octets
        • JTreeFolder.java~2~Télécharger ce fichier [Réservé aux membres club]3 087 octets
        • JTreeFolder.java~3~Télécharger ce fichier [Réservé aux membres club]4 564 octets
    • JTreeFolder-clic3.jpxTélécharger ce fichier [Réservé aux membres club]2 661 octets
    • JTreeFolder-clic3.jpx.localTélécharger ce fichier [Réservé aux membres club]2 114 octets
    • JTreeFolder-clic3.jpx.local~Télécharger ce fichier [Réservé aux membres club]1 682 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture GESTION D'IMAGES NUMÉRIQUES
Source avec Zip CONVERSION IMAGE
Source avec Zip UNZIP - DÉZIPEUR
Source avec Zip ZIPEUR DE FICHIER 2

 Sources de la même categorie

Source avec Zip Source avec une capture MENU CIRCULAIRE EN SWING par Julien39
Source avec Zip Source avec une capture BANNIÈRE EN SWING : TEXTE DÉFILANT SUR UN JLABEL par Julien39
Source avec Zip Source avec une capture INDICATEUR D'ACTIVITÉ ANIMÉ par Julien39
Source avec Zip Source avec une capture JGRAPH : COMPOSANTS SWING CUSTOMISÉS par Julien39
Source avec Zip Source avec une capture JTABLE CUSTOMISÉE par Julien39

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture API JTREE par Kimjoa
ENREGISTRER L'ARBORESCENCE D'UN JTREE DANS UN XML AVEC JDOM par coltman
Source avec Zip CRÉATEUR DE ARBORESCENCE SIMPLE POUR JTREE À PARTIR D'UN XML par loloof64
Source avec Zip [JTREE] ARBORESSANCE D'UN DISQUE DUR SIMPLE ET RAPIDE par Waldo2188
COMMENT LISTER L'ARBORESCENCE DES DISQUE DUR DANS UN JTREE par Duss

Commentaires et avis

Commentaire de AbriBus le 15/09/2005 08:59:07

Salut,
Il est cool ce post !
Justement, je me disait qu'il fallait que j'en fasse un... pour ma part, je me permettrais simplement de le transformer en JPanel...
Les explications sont cool aussi...
merci a vous FredRaid et grand_jeanluc

'BriBus

Commentaire de readfrefita le 24/06/2006 11:33:10

un grand merci pour ceux qui ont aidé pour ce code j'ai pas encore essayé mais au moins j'ai enfin trouvé une solution pour mon problème. j'espère qu'il marche. Sinon, attendez moi pour des qestions. Merci d'avance

Commentaire de ottolicos le 10/07/2006 18:11:19

bonjours tout le monde, je cherche un moyen d'installer les programmes java, on ma parle de Izpack mais je ne sais pas comme l'utilise.
Si quelqu'un a une idée?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

URGENT : problème de sélection dans un JTree [ par terminagroo ] Bonjour,Voil&#224; j'ai cr&#233;&#233; une arborescence de fichiers qui fonctionne plut&#244;t bien (un JTree). Mais mon probl&#232;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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,983 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales