IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Construction d'une arborescence dynamique


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Construction d'une arborescence dynamique
    Bonjour,

    J'essaye depuis plusieurs jours de créer une arborescence de façon dynamique et là, je désespère. Je m'explique. J'ai réussi à construire une arborescence représentant les dossiers et fichiers présents sur mon ordinateur mais cette arborescence se charge entièrement au lancement de l'application, se qui pause problème pour les ordinateurs bien remplis. Je souhaiterai pouvoir charger la racine de mon système et seulement lorsque je sélectionne un des dossier, charger et afficher dans mon arbre, les dossier et fichier qu'il comporte.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
     
    import java.io.File;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
     
     
    public class essai extends JFrame
    {
    //	private static final String Boolean = null;
    	private JTree arbre;
    	private DefaultMutableTreeNode racine;
    	public essai(){
    		this.setSize(300, 300);
    		this.setLocationRelativeTo(null);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setTitle("Les arbres");
    		//On invoque la méthode de construction de notre arbre
    		listRoot();
     
    		this.setVisible(true);
    	}
     
    	private void listRoot(){
     
    		this.racine = new DefaultMutableTreeNode();
     
    		int count = 0;
    		for(File file : File.listRoots())
    		{
    			DefaultMutableTreeNode lecteur = new DefaultMutableTreeNode(file.getAbsolutePath());
    			try {
    				for(File nom : file.listFiles()){
    					DefaultMutableTreeNode node = new DefaultMutableTreeNode(nom.getName()+"\\");
     
    					lecteur.add(this.listFile(nom, node));
     
    				}
    			} catch (NullPointerException e) {}
     
    			this.racine.add(lecteur);
     
    			//Si nous avons parcouru plus de 50 dossiers, on sort
    			//if(count > 50) {break;}
     
    		}
    		//On crée, avec notre hiérarchie, un arbre
    		arbre = new JTree(this.racine);
    		arbre.setRootVisible(false);
    		//Que nous plaçons sur le ContentPane de notre JFrame à l'aide d'un scroll 
    		this.getContentPane().add(new JScrollPane(arbre));
    	}
     
    	private DefaultMutableTreeNode listFile(File file, DefaultMutableTreeNode node){
    		int count = 0;
     
    		if(file.isFile())
    			return new DefaultMutableTreeNode(file.getName());
    		else{
    			for(File nom : file.listFiles()){
    				count++;
    				//pas plus de 5 enfants par noeud
    				if(count < 20){
    					DefaultMutableTreeNode subNode;
    					if(nom.isDirectory()){
    						subNode = new DefaultMutableTreeNode(nom.getName()+"\\");
    						node.add(this.listFile(nom, subNode));
    					}else{
    						subNode = new DefaultMutableTreeNode(nom.getName());
    					}
    					node.add(subNode);
    				}
    			}
    			return node;
    		}
    	}
     
    	public static void main(String[] args){
    		essai fen = new essai();
    	}
     
    }
    */
    Merci d'avance à ceux qui pourraient m'aider.

  2. #2
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Que cherche tu à faire exactement ?

    Car avec swing, il éxiste le "JFileChooser" qui fait bien cela...

    http://download.oracle.com/docs/cd/E...leChooser.html
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour cette réponse. Je ne connaissais pas cette classe. Je vais pouvoir avancer, merci encore

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    bonjour,
    serait il possible d'avoir un exemple pour la lecture dynamique d'une arbo de fichiers car je ne voit pas bien l'utilité de la classe JFileChooser
    (je ne suis pas expert en java)

    merci Rosagio

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    si ça vous intéresse
    voici le code pour ne déployer que les répertoires parcourus (parcours dynamique):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
     
    import java.io.File;
    import java.util.Hashtable;
     
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.TreePath;
     
    //****parcours dynamique d'un systeme de fichiers****
    // déploiement d'un répertoire que si l'on clique dessus
    public class Fenetre4 extends JFrame {
     
    	private JTree arbre;
    	private DefaultMutableTreeNode racine;
     
    	public Fenetre4(){
    		this.setSize(300, 300);
    		this.setLocationRelativeTo(null);
    		//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		//pour ne fermer qu'1 fenetre a la fois
    		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		this.setTitle("Les arbres");
    		//On invoque la méthode de construction de notre arbre
    		listRoot();
     
    		//------------------------------------------------------
    		try {
    			   //On force à utiliser le look and feel du system
    			   UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    			   //Ici on force tous les composants de notre fenêtre (this) 
    			   //à se redessiner avec le look and feel du système
    			   SwingUtilities.updateComponentTreeUI(this);
    			} catch (InstantiationException e) {
    			} catch (ClassNotFoundException e) {
    			} catch (UnsupportedLookAndFeelException e) {
    			} catch (IllegalAccessException e) {}
    		//-------------------------------------------------------
    		this.setVisible(true);
    	}
     
    	private void listRoot(){
     
    		this.racine = new DefaultMutableTreeNode();
     
    		int lect = 0;
    		for(File file : File.listRoots())
    		{
    			DefaultMutableTreeNode lecteur = new DefaultMutableTreeNode(file.getAbsolutePath());
    			try {
    				for(File nom : file.listFiles()){
    					DefaultMutableTreeNode node = new DefaultMutableTreeNode(nom.getName()+"\\");
     
    					//if ((nom.getName().endsWith(".mp3")&& nom.isFile())
    					//	|| (nom.isDirectory()))
    					lecteur.add(this.listFile(nom, node));
     
    				}
    			} catch (NullPointerException e) {}
     
    			lect++;
    			//Si nous avons parcouru plus de 3lecteurs, on sort
    			//if(lect > 3) {break;}
    			this.racine.add(lecteur);
     
    		}
    		//On crée, avec notre hiérarchie, un arbre
    		arbre = new JTree(this.racine);
    		//arbre.setRootVisible(false);
    		//----------------------------------------------------------
    		arbre.addTreeSelectionListener(new TreeSelectionListener(){
    			//------------------------------------------------------
    			public void valueChanged(TreeSelectionEvent event) {
    				if(arbre.getLastSelectedPathComponent() != null){
    					System.out.println(arbre.getLastSelectedPathComponent().toString());
    					//La méthode getPath retourne un objet TreePath
    					System.out.println(getAbsolutePath(event.getPath()));
     
     
    					File repertoire = new File(getAbsolutePath(event.getPath()));
    					if(repertoire.isDirectory()){
     
    						for(File nom : repertoire.listFiles()){
    							DefaultMutableTreeNode node = new DefaultMutableTreeNode(nom.getName()+"\\");
     
    						((DefaultMutableTreeNode) arbre.getLastSelectedPathComponent()).add(listFile(nom, node));
    						  arbre.repaint();
    						}
    					}
    				}
    			}
    			//------------------------------------------------
    			private String getAbsolutePath(TreePath treePath){
    				String str = "";
    				//On balaie le contenu de notre TreePath
    				for(Object name : treePath.getPath()){
    					//Si l'objet à un nom, on l'ajoute au chemin
    					if(name.toString() != null)
    						str += name.toString();
    				}
    				return str;
    			}
    			//-------------------------------------------------
    		});
     
    		//Que nous plaçons sur le ContentPane de notre JFrame à l'aide d'un scroll 
    		this.getContentPane().add(new JScrollPane(arbre));
    	}
     
    	private DefaultMutableTreeNode listFile(File file, DefaultMutableTreeNode node){
    		int count = 0;
     
    		if(file.isFile())
    			return new DefaultMutableTreeNode(file.getName());
    		else{
    			return new DefaultMutableTreeNode(file.getName()+"\\");
    		}
    	}
     
    	public static void main(String[] args){
    		Fenetre4 fen = new Fenetre4();
    	}
     
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/04/2011, 00h16
  2. Creation d'une arborescence dynamique
    Par jashy dans le forum Développement Sharepoint
    Réponses: 2
    Dernier message: 25/03/2010, 16h48
  3. modifier une arborescence dynamique
    Par discusaigon dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 23/02/2009, 08h40
  4. Construction d'une arborescence de répertoires
    Par LiNuXaDDiKt dans le forum Langage
    Réponses: 0
    Dernier message: 13/12/2008, 07h10
  5. comment créer une arborescence dynamique
    Par amine84 dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 22/09/2008, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo