Jtree : récupérer le noeud qui a le focus... [Java] - Java - Programmation
Marsh Posté le 05-01-2005 à 11:19:31
apprends que le jdk possède une javadoc
http://java.sun.com/j2se/1.5.0/doc [...] ionPath())
Marsh Posté le 05-01-2005 à 19:35:11
merci pour l'info mais j'avais deja vu cette page et je n'arrive pas à trouver, j'ai essayé une dizaine de choses mais je n'arrive toujours pas a savoir comment avoir le noeud qui a le focus....
Marsh Posté le 05-01-2005 à 19:46:10
voilà un bout de code déterré :
Code :
|
En espérant que ça puisse t'aider
Marsh Posté le 05-01-2005 à 20:47:06
.getLastSelectedPathComponent, je peux pas mettre ça derriere mon treeListe. il y a une erreur de compil (je suis sur NetBeans IDE)
Marsh Posté le 05-01-2005 à 20:55:10
je connais rien aux Jtree, mais je vais sur la javadoc de JTree
http://java.sun.com/j2se/1.5.0/doc [...] JTree.html
je tombe sur le lien vers le tutorial
http://java.sun.com/docs/books/tut [...] /tree.html
je vois un sommaire avec dedans "Responding to Node Selection"
http://java.sun.com/docs/books/tut [...] tml#select
et je vois :
Code :
|
Marsh Posté le 05-01-2005 à 21:52:35
tu veux que ce soit le fait d'être sélectionné qui provoque l'affichage du noeud dans le JLabel ? ou simplement le clic ?
si c'est le clic ->
monArbre.addMouseListenener( <blabla> ) avec un code qui va chercher le lieu (x,y) du clic dans le MouseEvent et avec getClosestPathForLocation(int, int), tu va rechercher la cellule du tableau.
si c'est la sélection ->
monArbre.getSelectionModel.addTreeSelectionListener(<blabla> )
dans le blabla tu recevras un TreeSelectionEvent dans lequel tu vas aller chercher le getNewLeadSelectionPath() sur lequel tu vas prendre le getLastPathComponent().
C'est un peu le bordel, mais c'est parce que suivant comment est configuré ton TreeSelectionModel, tu peux sélectionner plusieurs noeuds à la fois (avec CTRL ou SHIFT). comme tu n'as qu'un seul label, tu ne peux y mettre que le "meneur" de la sélection, celui qui en général a un cadre noir autour en plus d'être sur fond bleu.
Marsh Posté le 05-01-2005 à 21:55:51
ah oui, la différence : a-priori, je suppose que c'est la sélection que tu veux afficher pour signifier à l'utilisateur qu'il va faire un traitement dessus. faire sur les évènements de sélection permet de lui laisser le choix de faire sa sélection au clavier, sur un écran tactile ou avec des truc louches pour handicapés.
Marsh Posté le 06-01-2005 à 14:15:14
nraynaud a écrit : |
Oui j'essaye de faire ça mais quand tu me parle du blabla la comment ça marche ??
Parce que moi dans la parenthèse il me dit que ça doit etre un TreeSelectionListener apparement....
J'ai ça en fait :
treeListeStats.getSelectionModel().addTreeSelectionListener(.....);
alors que mettre dans les (....) ?
merci pour votre aide !
Marsh Posté le 07-01-2005 à 15:12:26
Code :
|
(oui je pourrais me faire TT pour ça mais je m'en fout, j'ai bien picolé au resto)
Marsh Posté le 07-01-2005 à 15:13:25
nraynaud a écrit : |
Marsh Posté le 07-01-2005 à 15:19:10
nraynaud a écrit : travail maché, tout ça ... |
bha c'est pas grave : les liens permettant de trouver tout seul ont déjà été donnés ...
Marsh Posté le 07-01-2005 à 19:12:49
nraynaud a écrit :
|
OK merci beaucoup pour la réponse !
Je pense avoir compris le fonctionnement mais alors tes accolades je ne les comprend pas ...
D'apres ce que je pense avoir compris, tu récupère un treeSelectionListener qui est en fait l'élément séléctionné dans mon Jtree et ensuite tu t'en sert afficher son non dans le lable ??
Marsh Posté le 07-01-2005 à 19:20:58
ham_mer a écrit : OK merci beaucoup pour la réponse ! |
c'est parce c'est une classe incluse, c'est très troublant en effet au début
Marsh Posté le 07-01-2005 à 19:22:31
ReplyMarsh Posté le 07-01-2005 à 19:26:35
Merci mais je ne comprend par toutes ces accolades ! (et oui j'ai du mal la!)
Marsh Posté le 07-01-2005 à 19:32:45
ReplyMarsh Posté le 07-01-2005 à 19:42:19
merci les gars
Je sais, je sais, je n'ai aucun mérite, vous m'avez filé la solution, je l'ai la sous les yeux, mais ça ne veut pas compiler.
Est ce que le code serait plutot comme ça :
treeListeStats.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e)
{
label1.setText(e.getNewLeadSelectionPath().getLastPathComponent().toString());
}
};
???
MERCI !!!!
Marsh Posté le 08-01-2005 à 19:33:26
ReplyMarsh Posté le 08-01-2005 à 21:07:25
lol, nan ça va en fait mais je pense que ça vient plutot d'un probleme de librairies non installées dans Netbeans.
Merci pour votre aide
Marsh Posté le 08-01-2005 à 21:34:15
finalement j'ai inclu les biblio et j'ai fait ça :
treeListeStats.addTreeSelectionListener(
new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
label2.setText(e.getNewLeadSelectionPath().getLastPathComponent().toString());
}
}
);
ça marche alors merci !
Marsh Posté le 08-01-2005 à 21:48:15
Encore une petite question, est ce qu'il y a moyen de récupérer le niveau d'un noeud dans la hiérachie de l'arbre, par exemple pour les premiers noeuds ça serait 0, les noeuds fils 1, les petits fils 2 etc.... ??? merci !
Marsh Posté le 09-01-2005 à 22:14:32
non, il faut parcourir un treepath en maintenant un compteur toi-même.
Marsh Posté le 11-01-2005 à 00:12:26
Un derniere question :
2005
|--janvier
|--12
Imaginons que le 12 soit séléctionné, je veux en fait afficher dans mon label : 12 janvier 2005, donc récupérer le TreePath si j'ai bien compri.
Seulement, avec la méthode je n'arrive pas a accéder au Path du "e" vu que ce n'est pas un noeud, alors comment convertir le "e" en noeud pour pouvoir récupérer son Treepath ??
Marsh Posté le 11-01-2005 à 00:26:01
euh, http://java.sun.com/j2se/1.4.2/doc [...] Event.html ...
Marsh Posté le 11-01-2005 à 13:14:07
nraynaud a écrit : ah oui, la différence : a-priori, je suppose que c'est la sélection que tu veux afficher pour signifier à l'utilisateur qu'il va faire un traitement dessus. faire sur les évènements de sélection permet de lui laisser le choix de faire sa sélection au clavier, sur un écran tactile ou avec des truc louches pour handicapés. |
sur le fond des choses, c'est pas top comme réflexion
mais soit. c'est pas le but du topic.
Marsh Posté le 12-01-2005 à 12:47:59
je trouvais juste que l'adjectif "louche" n'était pas des plus heureux dans "avec des trucs louches pour handicapés".
Marsh Posté le 12-01-2005 à 12:56:37
TBone a écrit : je trouvais juste que l'adjectif "louche" n'était pas des plus heureux dans "avec des trucs louches pour handicapés". |
ils ont des appareils des plus inimaginables pur accéder à l'informatique.
Marsh Posté le 12-01-2005 à 13:01:23
dans ce cas je comprends mieux ta phrase, pas de soucis
Marsh Posté le 04-01-2005 à 22:43:21
Salut,
Je suis débutant en java et apres pas mal de rechercher sur google et ici, je me suis décidé à poser ma question :
J'ai un JTree avec X noeuds dedans et en fait lorsque je clique sur un noeud je voudrais que son nom soit affiché dans un lablel.
donc j'ai ça :
label.setText(treeListe. );
Seulement je n'arrive pas à récupérer le noeud qui a le focus dans mon treeListe, alors si quelqu'un pouvait m'aider, merci !