Je vous explique mon soucis; je dispose d'une fonction qui à partir d'un chemin donné va me construire une arborescence d'arbre composé de dossiers
L'arborescence se construit correctement.
Par la suite lorsque je clique sur les dossiers de mon arbre; celui ci doit me retourner dans un tableau la liste des fichiers à l'intérieur.
Là aussi ça marche..mais seulement sur deux niveaux.
Je m'explique
Si je donne comme chemin
d1/
Alors le premier niveaux de l'arbre d1 affichera bien ses fichiers.
lorsque je déploie mon arbre
d1/d2
d1/d4
d2 et d4 afficheront bien les fichiers qu'ils contiennent.
Mais si je vais plus loin
d1/d2/d3
d3 n'affichera plus rien et va me généré une erreur dans la console.
L'arborescence est correcte; j'entends par là que si je déplie mon arbre je verrais bien l'ensemble des sous dossiers de d3.
Voici comment j'effectue la construction.
Etant donné qu'il y a de la récursivité je pense que le soucis doit venir de mon modèle qui doit rester celui du premier niveau d'arbre générant ensuite des nodes inconnu même s'ils sont affichés...enfin je sais pas vraiment en fait...je vous laisse jeter un coup d'oeil
- Code: Tout sélectionner
private void testArborescense(String path,javax.swing.tree.DefaultMutableTreeNode treeNode1)
{
File repertoire = new File(path);
String init=path;
String[] files;
files=repertoire.list();
int i;
for(i=0;i<files.length;i++){
String newPath=init+"\\"+files[i];
File f2=new File(newPath);
javax.swing.tree.DefaultMutableTreeNode treeNode2 = new javax.swing.tree.DefaultMutableTreeNode(f2.getName());
if(f2.isDirectory())
{
treeNode1.add(treeNode2);
testArborescense(newPath,treeNode2);
jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
}
jScrollPane4.setViewportView(jTree1);
}
}
Voilà pour la construction de l'arbre...l'idée c'est donc d'ajouter tous les dossiers dans l'arbre.
Et voilà comment jinteragis avec mon arbre
- Code: Tout sélectionner
//Listener sur la sélection dans l'arbre
jTree1.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
javax.swing.tree.DefaultMutableTreeNode obj = (javax.swing.tree.DefaultMutableTreeNode) jTree1.getLastSelectedPathComponent();
String s;
if(obj.toString()==firstDirectory)
{
s=path2+"\\"+obj.toString();
}
else
{
s=path+"\\"+obj.toString();
}
System.out.print("\n"+s+" contient les fichiers: \n");
File f2=new File(s);
String[] listes=f2.list();
for(int i=0;i<listes.length;i++)
{
System.out.print(listes[i]+" ");
}
if(f2.isDirectory())
{
updateTab(loadTabData(f2,s));
}
}
});
}
En ce qui concerne l'updateTab je peux vous assurer que le soucis ne vient pas de là puisqu'il met bien les données à jour pour les premiers noeuds.
Au niveau de la chaine résultat s elle contient à chaque étape le chemin absolu vers le sous dossiers qui a été cliqué donc pas de soucis venant de là non plus; ce qui peut se vérifier avec la trace en console.
En revanche lorsque je veux lister les fichiers on obtiens le même problème dès le clic sur un niveau 2 d'arbre le programme en console crash.
Pour reprendre l'exemple si dessus ça me donnerait à l'affichage
d1/d2/d3 contient les fichiers;
et là une série de message d'erreur commençant par un message de pointeur null qui j'imagine répercute la première erreur en cascade sur tout un tas de trucs...