Bonjour,

Je suis en train de faire une petite application avec un JTree composé de Checkbox.
Je suis parti avec une récursivite pour faire apparaître mes répertoires, le code fonctionne bien
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
@SuppressWarnings("finally")
	private static DefaultMutableTreeNode addDirectory(File file, DefaultMutableTreeNode noeud) {
    	File[] liste;
        liste = file.listFiles();
        try{
        	for(int i = 0 ; i < liste.length ; i++){
            	if(liste[i].isDirectory() == true){
            		System.out.println(liste[i]);
            		DefaultMutableTreeNode sous_rep = new DefaultMutableTreeNode(liste[i]);
            		//sous_rep.add( new DefaultMutableTreeNode(""));
    				/*que l'on ajoute au noeud précédent */
    				noeud.add(sous_rep);
    				/* et on regarde le contenu de ce nouveau répertoire */
    				addDirectory(liste[i], sous_rep);
            	}
            }
        } catch(NullPointerException e)
		{
			//exception que l'on obtient lorsqu'il n'y a plus de répertoire ou de fichier
		} finally{
			return noeud;
		}
	}
En regardant quelques exemples, je me suis aperçu qu'il faut utiliser TreeCellRenderer. Pour cela il faut au definir un tableau multidimension pour faire le JTree comme l'exemple suivant
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
public CheckNodeTreeExample() {
    super("CheckNode TreeExample");
    String[] strs = {"swing",     // 0
		     "platf",     // 1
		     "basic",     // 2
		     "metal",     // 3
		     "JTree"};    // 4
                                             
    CheckNode[] nodes = new CheckNode[strs.length];
    for (int i=0;i<strs.length;i++) {
      nodes[i] = new CheckNode(strs[i]); 
    }
    nodes[0].add(nodes[1]);
    nodes[1].add(nodes[2]);
    nodes[1].add(nodes[3]);
    nodes[0].add(nodes[4]);
    nodes[3].setSelected(true);
    
 
    JTree tree = new JTree( nodes[0] );
    tree.setCellRenderer(new CheckRenderer());
    tree.getSelectionModel().setSelectionMode(
      TreeSelectionModel.SINGLE_TREE_SELECTION
    );
    tree.putClientProperty("JTree.lineStyle", "Angled");
    tree.addMouseListener(new NodeSelectionListener(tree));
    JScrollPane sp = new JScrollPane(tree);
...
Je comptais utiliser le principe de récursivité pour mon arraylist mais comment créer un arraylist dont le nombre de dimension évolue ???

Merci pour votre aide

Drick