Bonjour.

Je viens vers vous car cela fait actuellement 2 soirées que je bloque sur la création et l'affichage d'un JTree.

-- J'utilise l'aide à la conception de fenêtre d'éclipse --

J'ai une fenêtre principale qui contient un JTree que je souhaite voir évoluer dynamiquement (un peu comme celui d'éclipse).

Dans l'initialisation de mon JTree (donc au lancement de ma fenêtre), je souhaite instancier un objet qui aurait une méthode permettant la création de mon arbre.

Cette méthode prend un dossier précis et va vérifier tout les sous dossiers et sous- sous dossier du premier dossier. Ensuite je vérifie tout les fichiers.
Dans un soucis de clarté dans mes propos, voila ce que je souhaite :
Mes Projets -> dossier -> dossier -> fichiers.

J'ai crée cette méthode et elle fonctionne bien quand je l'incorpore dans ma fenêtre, mais dés que je passe par ma méthode, plus rien.

J'ai recherché sur le web et ai vu qu'il fallait un model de conception du JTree, mais j'ai beau en rajouter un, il ne m'affiche toujours rien.

C'est pourquoi je me tourne vers vous

j'ai surement dû omettre une donnée donc je vous donne mes sources :

Fichier contenant ma fenetre
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
package fenetre;
import java.awt.Frame;
import javax.swing.JPanel;
import java.awt.GridBagLayout;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.JTextPane;
import javax.swing.BorderFactory;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
 
import Arbre.CreerArbre;
 
public class FenetrePrincipale extends Frame {
 
	private static final long serialVersionUID = 1L;
	private JPanel PanelConteneurArbor = null;
	private JPanel PanelOptions = null;
	private JPanel PanelAdmin = null;
	private JScrollPane jScrollPane1 = null;
	private JTextPane TextFichier = null;
	private JPanel PanelEditeur = null;
	private JPanel PanelZoneOption = null;
	private JScrollPane jScrollPane = null;
	private JTree TreeArbreArbo = null;
	/**
         * This is the default constructor
         */
	public FenetrePrincipale() {
		super();
		initialize();
	}
 
	/**
         * This method initializes this
         * 
         * @return void
         */
	private void initialize() {
		this.setSize(1024, 768);
		this.setTitle("PROJET EDITOR");
 
		this.add(getPanelConteneurArbor(), BorderLayout.WEST);
		this.add(getPanelAdmin(), BorderLayout.CENTER);
		this.add(getPanelZoneOption(), BorderLayout.NORTH);
	}
 
	/**
         * This method initializes PanelConteneurArbor  
         *      
         * @return javax.swing.JPanel   
         */
	private JPanel getPanelConteneurArbor() {
		if (PanelConteneurArbor == null) {
			PanelConteneurArbor = new JPanel();
			PanelConteneurArbor.setLayout(new BorderLayout());
			PanelConteneurArbor.setPreferredSize(new Dimension(200, 540));
			PanelConteneurArbor.add(getPanelOptions(), BorderLayout.SOUTH);
			PanelConteneurArbor.add(getJScrollPane(), BorderLayout.CENTER);
		}
		return PanelConteneurArbor;
	}
 
	/**
         * This method initializes PanelOptions 
         *      
         * @return javax.swing.JPanel   
         */
	private JPanel getPanelOptions() {
		if (PanelOptions == null) {
			PanelOptions = new JPanel();
			PanelOptions.setLayout(new GridBagLayout());
			PanelOptions.setPreferredSize(new Dimension(200, 200));
			PanelOptions.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
		}
		return PanelOptions;
	}
 
	/**
         * This method initializes PanelAdmin   
         *      
         * @return javax.swing.JPanel   
         */
	private JPanel getPanelAdmin() {
		if (PanelAdmin == null) {
			PanelAdmin = new JPanel();
			PanelAdmin.setLayout(new BorderLayout());
			PanelAdmin.add(getJScrollPane1(), BorderLayout.EAST);
			PanelAdmin.add(getPanelEditeur(), BorderLayout.WEST);
		}
		return PanelAdmin;
	}
 
	/**
         * This method initializes jScrollPane1 
         *      
         * @return javax.swing.JScrollPane      
         */
	private JScrollPane getJScrollPane1() {
		if (jScrollPane1 == null) {
			jScrollPane1 = new JScrollPane();
			jScrollPane1.setPreferredSize(new Dimension(436, 500));
			jScrollPane1.setViewportView(getTextFichier());
		}
		return jScrollPane1;
	}
 
	/**
         * This method initializes TextFichier  
         *      
         * @return javax.swing.JTextPane        
         */
	private JTextPane getTextFichier() {
		if (TextFichier == null) {
			TextFichier = new JTextPane();
			TextFichier.setSize(new Dimension(450, 701));
		}
		return TextFichier;
	}
 
	/**
         * This method initializes PanelEditeur 
         *      
         * @return javax.swing.JPanel   
         */
	private JPanel getPanelEditeur() {
		if (PanelEditeur == null) {
			PanelEditeur = new JPanel();
			PanelEditeur.setLayout(null);
			PanelEditeur.setPreferredSize(new Dimension(380, 500));
		}
		return PanelEditeur;
	}
 
	/**
         * This method initializes PanelZoneOption      
         *      
         * @return javax.swing.JPanel   
         */
	private JPanel getPanelZoneOption() {
		if (PanelZoneOption == null) {
			PanelZoneOption = new JPanel();
			PanelZoneOption.setLayout(new GridBagLayout());
			PanelZoneOption.setPreferredSize(new Dimension(1024, 30));
			PanelZoneOption.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
		}
		return PanelZoneOption;
	}
 
	/**
         * This method initializes jScrollPane  
         *      
         * @return javax.swing.JScrollPane      
         */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setViewportView(getTreeArbreArbo());
		}
		return jScrollPane;
	}
 
	/**
         * This method initializes TreeArbreArbo        
         *      
         * @return javax.swing.JTree    
         */
	private JTree getTreeArbreArbo() {
		if (TreeArbreArbo == null) {
			TreeArbreArbo = new JTree();
			CreerArbre CA = new CreerArbre();
			ModelArbreArbo MAA = new ModelArbreArbo(CA.Creer());
			TreeArbreArbo.setModel(MAA);
		}
		return TreeArbreArbo;
	}
 
}

La classe contenant ma méthode :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
package Arbre;
 
import java.io.File;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
 
 
public class CreerArbre {
 
	public JTree Creer() {
 
		JTree monArbre = null;
 
		File DossierAccueil = new File("Mes Projets");
		if (DossierAccueil.isDirectory() == false) {
			DossierAccueil.mkdir();
		}
 
		// Recupération de la racine
		DefaultMutableTreeNode Racine = new DefaultMutableTreeNode(
				"Mes Projets");
		// Si le dossier Projet comporte des élements.
		if (DossierAccueil.list().length != 0) {
 
			// On recupere les dossiers de projet et on les rajoutes au dossier
			// Projet.
			String[] DossierProjet = new String[DossierAccueil.list().length];
			DossierProjet = DossierAccueil.list();
			for (String s : DossierProjet) {
				DefaultMutableTreeNode RepertoireProjet = new DefaultMutableTreeNode(
						s);
				Racine.add(RepertoireProjet);
 
				File DossierPackage = new File("Mes Projets" + File.separator
						+ s);
				if (DossierPackage.list().length != 0) {
 
					String[] DossierPack = new String[DossierPackage.list().length];
					DossierPack = DossierPackage.list();
					for (String s2 : DossierPack) {
						DefaultMutableTreeNode RepertoirePackage = new DefaultMutableTreeNode(
								s2);
						RepertoireProjet.add(RepertoirePackage);
 
						File Fichier = new File("Mes Projets" + File.separator
								+ s + File.separator + s2);
						if (Fichier.list().length != 0) {
 
							String[] FichiersClass = new String[Fichier.list().length];
							FichiersClass = Fichier.list();
							for (String s3 : FichiersClass) {
								DefaultMutableTreeNode FichiersClasse = new DefaultMutableTreeNode(
										s3);
								RepertoirePackage.add(FichiersClasse);
							}
						}
					}
				}
			}
		}
 
		monArbre = new JTree(Racine);
		return monArbre;
	}
}
Et mon modele de conception
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package fenetre;
 
import javax.swing.JTree;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
 
public class ModelArbreArbo implements TreeModel{
	JTree Arbre = new JTree();
 
	public ModelArbreArbo(JTree Arbre) {
		this.Arbre = Arbre;
	}
 
	public void addTreeModelListener(TreeModelListener arg0) {
		// TODO Auto-generated method stub
 
	}
 
	public Object getChild(Object arg0, int arg1) {
		// TODO Auto-generated method stub
		return null;
	}
 
	public int getChildCount(Object arg0) {
		// TODO Auto-generated method stub
		return 0;
	}
 
	public int getIndexOfChild(Object arg0, Object arg1) {
		// TODO Auto-generated method stub
		return 0;
	}
 
	public Object getRoot() {
		// TODO Auto-generated method stub
		return null;
	}
 
	public boolean isLeaf(Object arg0) {
		// TODO Auto-generated method stub
		return false;
	}
 
	public void removeTreeModelListener(TreeModelListener arg0) {
		// TODO Auto-generated method stub
 
	}
 
	public void valueForPathChanged(TreePath arg0, Object arg1) {
		// TODO Auto-generated method stub
 
	}
 
}
2 - De plus , j'en profite pour avoir quelques renseignements supplémentaires comme :
* Faut-il, comme les JTable, refaire un affichage à chaque mouvement dans le JTree (après une suppression de dossier etc .. )?
* Ai-je utilisé la bonne méthode ou une autre méthode est conseillée ?

Merci pour ceux qui prendraient le temps de me répondre et de m'aider.

Le Cryosore