Creer et afficher un JTree
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:
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:
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:
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