Bonjour a tous
J'aimerai savoir si il est possible de créer une JTree a partir d'une chaîne de caractère
On imagine que la chaîne de caractère ressemble a une table de matière où un fils est déterminé par une tabulation
(pour mon cas les fils sont déterminé par un certain nombre d'espace)
J'avais pensé faire une methode getJTree() récursive qui retournerait un DefaultMutableTreeNode
et une autre fonction creationArbre() qui crée l'arbre(la JTree) a partir de getJTree()
voici mes méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public static JTree creationArbre(int i){ JTree myTree; DefaultMutableTreeNode pere=getJTree(i,new DefaultMutableTreeNode (getIntitule(i))); //getIntilule retourne l'intitule du titre de ma table des matiére contenu a la ligne i return myTree=new JTree(pere); }
le seul resulta potable que j'obtient c'est le noeud racine suivi d'un seul noeud fils
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 static DefaultMutableTreeNode getJTree(int i, DefaultMutableTreeNode pere){ if(pere.isRoot()){ DefaultMutableTreeNode nFils=new DefaultMutableTreeNode(getIntitule(i+1)); nFils.add(getJTree(i+2,nFils)); pere.add(nFils); //DefaultMutableTreeNode nomPere= new DefaultMutableTreeNode(getIntitule(j)); //DefaultMutableTreeNode nomFils= new DefaultMutableTreeNode(getIntitule(i+1)); //nomPere.add(getJTree(i,j+1)); return pere; } else{ DefaultMutableTreeNode nFils=new DefaultMutableTreeNode(getIntitule(i)); DefaultMutableTreeNode nPere= (DefaultMutableTreeNode) nFils.getParent(); if(numArbo(getIntitule(i+1))==numArbo(getIntitule(i))){ //numArbo() compte le nombre de d'espace ou de tabulation contenu dans l'intitule de la ligne return getJTree(i+1,nPere); } else{ if(numArbo(getIntitule(i+1))<numArbo(getIntitule(i))){ return getJTree(i-1,nPere); } else{ pere.add(nFils); return getJTree(i-1,nPere); } } }
J’espère que vous avez compris mon problème
j'aimerai savoir si c'est possible d'entreprendre ce que je souhaite faire?
Enfin si non, il y aurait t il une autre maniére
Merci pour toute réponse
Partager