begin process at 2010 02 09 19:21: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é :12 955 / 1 098

Auteur : fmazoue

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (8)
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 TRADUCTEUR FRANÇAIS --> NERLANDAIS par edouard333
Source avec Zip IA POUR DISCUTER par edouard333
Source avec Zip Source avec une capture JSUBTITLE1.0 par darrylsite
Source avec Zip COMPILATEUR PASCAL par youma85
Source avec Zip CONTENEUR DE COMPOSANT HETEROGENES par mad_charif

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...

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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

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