begin process at 2012 02 04 18:20:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > JTREEFOLDER

JTREEFOLDER


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :20/09/2004 Date de mise à jour :22/09/2004 13:44:15 Vu / téléchargé :14 236 / 1 156

Auteur : fmazoue

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Arborescence des fichiers et dossiers de son ordinateur !

Source

  • package XploS.component;
  • import java.io.*;
  • import java.awt.*;
  • import javax.swing.*;
  • import javax.swing.event.*;
  • import javax.swing.tree.*;
  • /**
  • * @author MAZOUE Florian fmazoue@yahoo.fr
  • * @param seeFile true pour afficher les fichiers false pour ne pas les affichés et donc voir que les dossiers
  • */
  • public class JTreeFolder extends JPanel {
  • protected NodeWithFile racine;
  • protected JTree tree;
  • protected JScrollPane scrollpane;
  • /**
  • * @author MAZOUE Florian
  • * @description Permet de créer des nodes avec en paramètre un chemin d'accès à un fichier
  • */
  • private class NodeWithFile extends DefaultMutableTreeNode {
  • File file;
  • public NodeWithFile() {
  • super();
  • }
  • public NodeWithFile(Object userObject) {
  • super(userObject);
  • }
  • public NodeWithFile(Object userObject, File newFile) {
  • super(userObject);
  • file = newFile;
  • }
  • public File getFile() {
  • return file;
  • }
  • }
  • /**
  • * @author MAZOUE Florian
  • * @description Permet de changer l'icône des nodes en récupérant l'icône associé au fichier
  • *
  • */
  • private class Renderer extends DefaultTreeCellRenderer {
  • public Renderer() {
  • super();
  • }
  • public Component getTreeCellRendererComponent(JTree tree,
  • Object value,
  • boolean selected,
  • boolean expanded,
  • boolean leaf,
  • int row,
  • boolean hasFocus) {
  • try {
  • NodeWithFile node = (NodeWithFile) value;
  • Icon icone = javax.swing.filechooser.FileSystemView.getFileSystemView().getSystemIcon(node.file);
  • if(expanded) {
  • setOpenIcon(icone);
  • }
  • if(leaf) {
  • setLeafIcon(icone);
  • }
  • if(!expanded && !leaf) {
  • setClosedIcon(icone);
  • }
  • }
  • catch (Exception ex) {
  • System.out.println("erreur dans renderer : "+ex+" value : "+value);
  • }
  • super.getTreeCellRendererComponent(tree,
  • value,
  • selected,
  • expanded,
  • leaf,
  • row,
  • hasFocus);
  • return this;
  • }
  • }
  • public JTreeFolder(final boolean seeFile) throws HeadlessException {
  • tree = new JTree();
  • racine = new NodeWithFile("Poste de travail"); //racine
  • final DefaultTreeModel model = new DefaultTreeModel(racine);
  • tree.setCellRenderer(new Renderer());
  • tree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
  • public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
  • try {
  • TreePath path = evt.getPath();
  • if((path.getLastPathComponent().toString()).equals("Poste de travail")==true) {
  • File[] drive;
  • drive = File.listRoots();
  • for (int i = 0; i < drive.length; i++) {
  • NodeWithFile node = new NodeWithFile(drive[i], drive[i]);
  • addFolderTemp(drive[i], node);
  • racine.add(node);
  • }
  • }
  • else {
  • NodeWithFile node = (NodeWithFile) path.getLastPathComponent(); //
  • node.removeAllChildren();
  • addFolder(node.getFile(), node, 1, seeFile);
  • ( (DefaultTreeModel) tree.getModel()).reload(node);
  • }
  • //System.out.println(getFile());
  • }
  • catch (Exception ex) {
  • System.out.println("erreur dans tree.selection " + ex);
  • }
  • }
  • });
  • tree.addTreeExpansionListener(new TreeExpansionListener() {
  • public void treeExpanded(TreeExpansionEvent e) {
  • try {
  • TreePath path = e.getPath();
  • if((path.getLastPathComponent().toString()).equals("Poste de travail")==true) {
  • File[] drive;
  • drive = File.listRoots();
  • for (int i = 0; i < drive.length; i++) {
  • NodeWithFile node = new NodeWithFile(drive[i], drive[i]);
  • addFolderTemp(drive[i], node);
  • racine.add(node);
  • }
  • }
  • else {
  • NodeWithFile node = (NodeWithFile) path.getLastPathComponent(); //
  • node.removeAllChildren();
  • addFolder(node.getFile(), node, 1, seeFile);
  • ( (DefaultTreeModel) tree.getModel()).reload(node);
  • }
  • //System.out.println(getFile());
  • }
  • catch (Exception ex) {
  • System.out.println("erreur dans tree.expanded" + ex);
  • }
  • }
  • public void treeCollapsed(TreeExpansionEvent e) {
  • // lorsqu'un noeud est refermé
  • //RIEN
  • //voir ultérieurement si il ne faut pas faire removeAllChildren() !!!
  • }
  • });
  • tree.setModel(model);
  • scrollpane = new JScrollPane();
  • scrollpane.getViewport().add(tree, null);
  • Dimension d=new java.awt.Dimension(200,300);
  • scrollpane.setPreferredSize(d);
  • super.add(scrollpane);
  • }
  • public static void main(String[] arg)
  • {
  • JFrame frame = new JFrame();
  • JTreeFolder arbre = new JTreeFolder(true);
  • frame.getContentPane().add(arbre, BorderLayout.CENTER);
  • frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
  • frame.pack();
  • frame.show();
  • }
  • private void addFolder(File driveOrDir, DefaultMutableTreeNode node, int level, boolean seeFile) {
  • File[] fileList;
  • fileList = driveOrDir.listFiles();
  • try {
  • for (int i = 0; i < fileList.length; i++) {
  • if(seeFile==true||fileList[i].isFile()==false) {
  • NodeWithFile dir = new NodeWithFile(fileList[i].getName(), fileList[i]);
  • if (fileList[i].isDirectory() == true) {
  • addFolderTemp(fileList[i], dir);
  • }
  • node.add(dir);
  • }
  • }
  • }
  • catch (NullPointerException e) {
  • return;
  • }
  • }
  • //Permet l'ajout d'un node temporaire si node isDirectory
  • public void addFolderTemp(File file, NodeWithFile node) {
  • NodeWithFile temp = new NodeWithFile(file);
  • node.add(temp);
  • }
  • public File getFile() {
  • return ((NodeWithFile) tree.getLastSelectedPathComponent()).getFile();
  • }
  • }
package XploS.component;

import java.io.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;

/**
 * @author MAZOUE Florian fmazoue@yahoo.fr
 * @param seeFile true pour afficher les fichiers false pour ne pas les affichés et donc voir que les dossiers
 */
public class JTreeFolder extends JPanel {

    protected NodeWithFile racine;
    protected JTree tree;
    protected JScrollPane scrollpane;
    
    
    /**
     * @author MAZOUE Florian
     * @description Permet de créer des nodes avec en paramètre un chemin d'accès à un fichier
     */
    private class NodeWithFile extends DefaultMutableTreeNode {
        File file;

        public NodeWithFile() {
            super();
        }
        
        public NodeWithFile(Object userObject) {
            super(userObject);
        }

        public NodeWithFile(Object userObject, File newFile) {
            super(userObject);
            file = newFile;
        }

        public File getFile() {
            return file;
        }
    }

    /**
     * @author MAZOUE Florian
     * @description Permet de changer l'icône des nodes en récupérant l'icône associé au fichier
     *
     */
    private class Renderer extends DefaultTreeCellRenderer {
        
        public Renderer() {
            super();
        }
        
        public Component getTreeCellRendererComponent(JTree tree, 
                                                    Object value, 
                                                    boolean selected, 
                                                    boolean expanded,
                                                    boolean leaf, 
                                                    int row, 
                                                    boolean hasFocus) {
            
                                                      
            try {
                NodeWithFile node = (NodeWithFile) value;
                Icon icone = javax.swing.filechooser.FileSystemView.getFileSystemView().getSystemIcon(node.file);
                if(expanded) {
                    setOpenIcon(icone);
                } 
                if(leaf) {
                    setLeafIcon(icone);
                } 
                if(!expanded && !leaf) {
                    setClosedIcon(icone);
                }
                
            }
            catch (Exception ex) {
                System.out.println("erreur dans renderer : "+ex+"    value : "+value);
                
            }
            super.getTreeCellRendererComponent(tree, 
                                            value, 
                                            selected, 
                                            expanded, 
                                            leaf, 
                                            row, 
                                            hasFocus);
            return this;
        }
    }

    public JTreeFolder(final boolean seeFile) throws HeadlessException {
        
        tree = new JTree();
        racine = new NodeWithFile("Poste de travail");  //racine
        final DefaultTreeModel model = new DefaultTreeModel(racine);
        tree.setCellRenderer(new Renderer());
        
                     
        tree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                try {
                    TreePath path = evt.getPath();
                    if((path.getLastPathComponent().toString()).equals("Poste de travail")==true) {
                        File[] drive;
                        drive = File.listRoots();
                        for (int i = 0; i < drive.length; i++) {

                            NodeWithFile node = new NodeWithFile(drive[i], drive[i]);
                            addFolderTemp(drive[i], node);
                            racine.add(node);

                        }
                    }    
                    else {
                        NodeWithFile node = (NodeWithFile) path.getLastPathComponent(); //
                        node.removeAllChildren();
                        addFolder(node.getFile(), node, 1, seeFile);
                        ( (DefaultTreeModel) tree.getModel()).reload(node);
                    }
                    //System.out.println(getFile());
                }
                catch (Exception ex) {
                    System.out.println("erreur dans tree.selection " + ex);
                }
            }
        });

        tree.addTreeExpansionListener(new TreeExpansionListener() {
            public void treeExpanded(TreeExpansionEvent e) {

                try {
                    TreePath path = e.getPath();
                    if((path.getLastPathComponent().toString()).equals("Poste de travail")==true) {
                        File[] drive;
                        drive = File.listRoots();
                        for (int i = 0; i < drive.length; i++) {

                            NodeWithFile node = new NodeWithFile(drive[i], drive[i]);
                            addFolderTemp(drive[i], node);
                            racine.add(node);

                        }
                    }
                    else {
                    NodeWithFile node = (NodeWithFile) path.getLastPathComponent(); //
                    node.removeAllChildren();

                    addFolder(node.getFile(), node, 1, seeFile);

                    ( (DefaultTreeModel) tree.getModel()).reload(node);
                
                   }
                   //System.out.println(getFile());
                }
                catch (Exception ex) {
                    System.out.println("erreur dans tree.expanded" + ex);
                }
            }

            public void treeCollapsed(TreeExpansionEvent e) {
                // lorsqu'un noeud est refermé
                //RIEN
                //voir ultérieurement si il ne faut pas faire removeAllChildren() !!!
            }
        });
        
        tree.setModel(model);
        scrollpane = new JScrollPane();
        scrollpane.getViewport().add(tree, null);
        Dimension d=new java.awt.Dimension(200,300);
        scrollpane.setPreferredSize(d);
        super.add(scrollpane);

    }
    
    public static void main(String[] arg)
    {
        JFrame frame = new JFrame();
        JTreeFolder arbre = new JTreeFolder(true);
        
        frame.getContentPane().add(arbre, BorderLayout.CENTER);
        frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.show();
    }

    private void addFolder(File driveOrDir, DefaultMutableTreeNode node, int level, boolean seeFile) {
        File[] fileList;

        fileList = driveOrDir.listFiles();

        try {
            for (int i = 0; i < fileList.length; i++) {
                if(seeFile==true||fileList[i].isFile()==false) {
                    NodeWithFile dir = new NodeWithFile(fileList[i].getName(), fileList[i]);
                    if (fileList[i].isDirectory() == true) {
                        addFolderTemp(fileList[i], dir);
                    }
                    node.add(dir);
                }
              
            }
        }
        catch (NullPointerException e) {
            return;
        }

    }

    //Permet l'ajout d'un node temporaire si node isDirectory
    public void addFolderTemp(File file, NodeWithFile node) {
        NodeWithFile temp = new NodeWithFile(file);
        node.add(temp);
    }
    
    public File getFile() {
        return ((NodeWithFile) tree.getLastSelectedPathComponent()).getFile();
    }

}

 Conclusion

Version non final car il reste encore plein de chose a rajouté : ex : lecteur réseau, vérifier si marche sur linux, plus d'options,...

Une seule option pour le moment : affichage ou non des fichiers dans les dossiers (param seeFile dans JTreeFolder : true pour voir fichier false pour ne pas les voir)

Cet élément va me servir pour faire une sorte de explorateur genre celui de windows ! Donc c'est mon premier élément ! Je vais maintenant passer à l'affichage des fichiers parce que j'en ai marre de me prendre la tête sur ce truc et j'avance pas :-) !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

22 septembre 2004 13:44:22 :
Le zip est là !

 Sources du même auteur

Source avec Zip Source avec une capture BLOC NOTES POUR TELEPHONE PORTABLE

 Sources de la même categorie

Source avec Zip Source avec une capture COMPLÉTION AUTOMATIQUE par Julien39
Source avec Zip Source avec une capture [JOGL] ANIMATION 3D DANS UN BOUTON par loloof64
Source avec Zip CALCULATRICE BIEN FAITE (VERSION SIMPLIFIÉE) par Julien39
Source avec une capture YNOT, UN NOUVEAU LANGAGE DE SCRIPT ÉCRIT EN JAVA. par apmneo7114
Source avec Zip KIT DE FICHIERS DE PROGRAMMATION par edouard333

Commentaires et avis

Commentaire de gmi19oj19 le 20/09/2004 21:32:01

Au risque de faire le même remarque qu'ailleurs, pourrais tu mettre un zip à la place de to énorme bout de code ?

Sinon, code propre, même si il manque qques commentaires (dans le code, pas sur ;-)).

Utile pour comprendre le foctionnement d'un JTree.

Commentaire de fmazoue le 21/09/2004 14:21:35

merci, je va faire un zip mais demain !

Commentaire de ttornade le 28/09/2004 16:30:15

Interessant car je suis en train de developper quelque chose de similaire. Merci

Commentaire de yafisab le 11/10/2004 16:20:55

je trouve ça intéressant également pour les mêmes raisons...
par contre, comment faire pour l'utiliser?

/me decouvre le java avec jbuilder...et je suis complètement à la ramasse

Commentaire de fmazoue le 13/10/2004 17:00:35

l'utiliser comment ca ?

t'as juste a faire appel a cette classe JTreeFolder et le mettre dans ta fenetre et apres tu utilise le peu de méthode que j'ai mis !

Commentaire de yafisab le 14/10/2004 09:37:35

c bon, g posé la question un peu vite.../me decouvre jbuilder, c pour ça....
là ça marche et c'est bien foutu...

Commentaire de fmazoue le 16/10/2004 16:04:39

jbuilder ou ma source ? ;)

Commentaire de yafisab le 16/10/2004 17:17:49

les deux mon general! lol .;)

En fait je debute un projet en java, une interface graphique qui doit, entre autre, permettre à un utilisateur de recuperer un fichier en se baladant ds l'arborescence du poste de travail...

en gros il faut que je decouvre tout un tas de fonction existante de java et que je comprennes comment elles s'utilisent.....

alors je te remercie pour ta source, car j'aurais mis du temps à la faire, le temps de tout decouvrir....d'ailleurs faut que je finisse de piger tout le code...

Commentaire de ezzineahmed le 26/02/2010 14:01:33

voila en est dans 2010 et votre code fonctionne bien,
je me demande est ce que je pourrais faire ce travail à des machine dans le meme réseau sachant leurs adresses ip

Commentaire de fmazoue le 27/02/2010 12:48:10

Certainement si tu possède les droits ...

Commentaire de ezzineahmed le 27/02/2010 15:22:35

je veut avoir un aperçu sur le contenu des machines connectés en se référant de leurs adresses ip, qu'est ce que je doit ajouter dans le code.
merci bien.

Commentaire de lakreem le 28/03/2011 18:14:09

comment je peux modifier le code pour qu'il prends en paramètre le chemin d'un dossier spécifique pour l'afficher ?
merci d'avance

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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,671 sec (3)

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