Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1276 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JTree] TreeSelectionListener qui fait pas ce que je veux ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JTree] TreeSelectionListener qui fait pas ce que je veux ...

n°572289
spitagor
Posté le 21-11-2003 à 11:40:06  profilanswer
 

Voila j'expose le probleme :)  
 
J'ai un JTree qui permet d'explorer un systeme de fichiers
Le noeud racine est le poste de travail
je l'affiche de manière a ce que l'Utilisateur puisse acceder aux partitions systemes et aux lecteurs de disque. par la je veux dire qu'il y a un petit "+" (handle) en face de chaque lecteur au debut
 
Maintenant il faut pouvoir lister les repertoires contenus dans ces lecteurs.
 
Pour ca il faut utiliser soit un TreeExpansionListener, soit un TreeSelectionLIstener (ce que j'ai fait)
 
Donc dans mon TreeSelectionListener, je veux simplement  a partir du dossier courant (selectionné donc), lister la liste des sous dossiers de ce dossier.
 
Le problème c'est que le "+" s'affiche en meme temps que l'on clique sur le dossier (logique) donc on ne peux pas savoir si un dossier a des sous dossiers a moins de cliquer dessus! pas pratique du tout !
 
Pour pallier ce probleme j'ai fait un sous parcours qui parcours la liste des sous dossiers, liste leur sous dossiers pour chacun d'eux...ca  c'est tres lourd et de plus ca créee deux fois plus de noeud qu'il n'en faut !!!
 
donc ma question est : Comment faire ca de maniere plus simple ?
 
J'ai pensé a une solution qui, pour chaque sous dossier, verifierait si il a des sous dossiers, mais je n'ai pas trouvé de methode qui permette d'afficher un "+" a coté d'un noeud.  
 
Je me suis torturé les meninges et je me demande bien comment marche l'explorateur windows (il me faudrait les sources :D )
 
Voila en esperant ne pas vous avoir trop ennuyé :)  
 
Si vous avez des idées/reflexions/critiques sur ma maniere de penser la chose, merci de me le dire !
 
Ci dessous en bonus  :) le code implemantant l'ecouteur
 

Code :
  1. public class SelectionNoeud implements TreeSelectionListener {
  2.    
  3.       private Explorateur explo;
  4.    
  5.        public SelectionNoeud(Explorateur explo)
  6.       {
  7.          this.explo=explo;
  8.       }
  9.    
  10.        public void valueChanged(TreeSelectionEvent e)
  11.       {         
  12.          //recuperer le noeud courant
  13.          DefaultMutableTreeNode noeudparent = (DefaultMutableTreeNode)explo.rep.getLastSelectedPathComponent();
  14.      
  15.          if (noeudparent == null)
  16.             return;
  17.                        
  18.            //en faire un fichier
  19.          File fichnoeudparent =(File)noeudparent.getUserObject();
  20.        
  21.        //mettre à jour la Jlist avec la liste des elements du dossier courant
  22.          explo.ihm.listefiles.listefichiers.setListData(fichnoeudparent.listFiles());//pas important ca
  23.                    
  24.                     //liste son contenu si c'est un repertoire
  25.          if (fichnoeudparent.isDirectory())
  26.          {
  27.             File[] listesousrep=fichnoeudparent.listFiles();
  28.                    
  29.                      //on parcourt la liste des enfants
  30.             for (int j = 1 ; j<listesousrep.length ; j++)
  31.             {
  32.                         //on ne garde que les repertoires
  33.                if (listesousrep[j].isDirectory())
  34.                { 
  35.                          
  36.                            //on cree un noeud
  37.                   DefaultMutableTreeNode noeudsousrep=new DefaultMutableTreeNode(listesousrep[j]);
  38.                          
  39.                            //et on l'ajoute au parent
  40.                   noeudparent.add(noeudsousrep);
  41.                          
  42.                            //on recupere le file associé au noeud
  43.                   File fichnoeudsousrep =(File)noeudsousrep.getUserObject();
  44.                          
  45.                            //... et on liste son contenu si c'est un repertoire
  46.                   if (fichnoeudparent.isDirectory())
  47.                   {
  48.                      File[] listfichnoeudsousrep=fichnoeudsousrep.listFiles();
  49.                              
  50.                               //parcours des sous sous repertoires pour faire apparaitre la croix
  51.                      for(int k=1;k<listfichnoeudsousrep.length;k++)                           {
  52.                         if   (listfichnoeudsousrep[k].isDirectory())
  53.                         {               
  54.                            noeudsousrep.add(new DefaultMutableTreeNode(listfichnoeudsousrep[k]));
  55.                         }
  56.                      }
  57.                   }
  58.                }
  59.             }
  60.          }
  61.       }
  62.    }


 
 


Message édité par spitagor le 21-11-2003 à 11:55:58
mood
Publicité
Posté le 21-11-2003 à 11:40:06  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JTree] TreeSelectionListener qui fait pas ce que je veux ...

 

Sujets relatifs
[JTree] lister une arborescence systeme[Bouquins] Je veux apprendre à programmer !
[PHP] Expressions régulières... elle marche pas comme je veux...pkoi il veux pas rentrer dans mon if ????
aidez moi ... je veux mettre des info de page xml ds une page html ...Je veux qu'une entreprise fasse mon site
[Java] Cacher le Root Node dans un JTreeDes checkboxes dans un JTree ?
Ptit pb quand je veux parser le code de cette url[vb(a)] je veux faire fonction qui separe une chaine de char en deux
Plus de sujets relatifs à : [JTree] TreeSelectionListener qui fait pas ce que je veux ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR