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
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 @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; } }
Je comptais utiliser le principe de récursivité pour mon arraylist mais comment créer un arraylist dont le nombre de dimension évolue
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); ...???
Merci pour votre aide
Drick
Partager