Fichier et JTree

cs_jpegg Messages postés 10 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 27 mars 2003 - 30 déc. 2002 à 13:32
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 - 30 déc. 2002 à 15:22
Salut a tous,

J ai un soucis, je voudrais afficher les fichiers de mon repertoire courant avec des JTree. Je cree une classe JTreePanel, qui herite de la classe JPanel. Mon probleme vient de mon constructeur de JTreePanel, je n affiche que le premier sous-niveau du repertoire courant. Il faudrait faire un constructeur "recursif", mais je ne sais pas le faire. Si quelqu un avait une solution pour l affichage des fichiers a partir d un JTree, ca m arrangerait.

@+ et merci

JPEGG

1 réponse

JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
30 déc. 2002 à 15:22
Il va te falloir construire ton propre TreeModel (package javax.swing.tree) que tu donneras à la construction de ton JTree. Regarde sur le site de sun : www.java.sun.com il y a de bons exemples.
En gros, tu crée une classe qui implémente le TreeModel, et tu redéfini les méthodes de cette interface.
Tu as :

-> void addTreeModelListener(TreeModelListener l)
qui ajoute un écouteur aux modifictaions dans le model. Tu peux l'ignorer dans un premier temps en métant un corps vide

-> public Object getChild(Object parent, int index)
reouurne l'enfant numéro index du prent.
Dans ton cas tu peux faire :
File file=(File)parent;
return file.listFiles()[index];


-> public int getChildCount(Object parent)
retourne le nombre d'enfant du parent, tu peux faire :
File file=(File)parent;
return file.listFiles().length;


-> public int getIndexOfChild(Object parent, Object child)
retourne l'index du child dans le parent
File file=(File)parent;
File[] tab=file.listFiles();
for(int i=0;i<tab.length;i++)
   if(tab[i].equals(child))
      return i;
return -1;


-> public Object getRoot()
retourne la racine, c'est à dire ici le repertoire de départ

-> public boolean isLeaf(Object node)
retourne vrai si le node est une feuille, c'est à dire qu'ici c'est un fichier
File file=(File)node;
return file.isFile();


-> void removeTreeModelListener(TreeModelListener l)
qui retire un écouteur aux modifictaions dans le model. Tu peux l'ignorer dans un premier temps en métant un corps vide

-> public void valueForPathChanged(TreePath path, Object newValue)
qui modifie l'arbre par l'utilisateur. Tu peux l'ignorer dans un premier temps en métant un corps vide

Voilà j'espère avoir ètè clair

JHelp
1
Rejoignez-nous