Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1112 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Jtree : récupérer le noeud qui a le focus...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Jtree : récupérer le noeud qui a le focus...

n°937321
ham_mer
Posté le 04-01-2005 à 22:43:21  profilanswer
 

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 !  :sarcastic:

mood
Publicité
Posté le 04-01-2005 à 22:43:21  profilanswer
 

n°937556
bobuse
Posté le 05-01-2005 à 11:19:31  profilanswer
 

apprends que le jdk possède une javadoc ;)
http://java.sun.com/j2se/1.5.0/doc [...] ionPath())


Message édité par bobuse le 05-01-2005 à 11:19:52
n°938374
ham_mer
Posté le 05-01-2005 à 19:35:11  profilanswer
 

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....

n°938393
bobuse
Posté le 05-01-2005 à 19:46:10  profilanswer
 

voilà un bout de code déterré :

Code :
  1. public void valueChanged(TreeSelectionEvent e) {
  2.         DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
  3.         if (node == null)
  4.             return;
  5.         Object nodeInfo = node.getUserObject();
  6. //...


 
En espérant que ça puisse t'aider

n°938463
ham_mer
Posté le 05-01-2005 à 20:47:06  profilanswer
 

.getLastSelectedPathComponent, je peux pas mettre ça derriere mon treeListe. il y a une erreur de compil (je suis sur NetBeans IDE)

n°938466
benou
Posté le 05-01-2005 à 20:55:10  profilanswer
 

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 :
  1. DefaultMutableTreeNode node = (DefaultMutableTreeNode)
  2.                        tree.getLastSelectedPathComponent();
  3.     if (node == null) return;
  4.     Object nodeInfo = node.getUserObject();
  5.     if (node.isLeaf()) {
  6.         BookInfo book = (BookInfo)nodeInfo;
  7.         displayURL(book.bookURL);
  8.     } else {
  9.         displayURL(helpURL);
  10.     }


---------------
ma vie, mon oeuvre - HomePlayer
n°938526
nraynaud
lol
Posté le 05-01-2005 à 21:52:35  profilanswer
 

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.

n°938537
nraynaud
lol
Posté le 05-01-2005 à 21:55:51  profilanswer
 

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.

n°939097
ham_mer
Posté le 06-01-2005 à 14:15:14  profilanswer
 

nraynaud a écrit :


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().


 
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 !


Message édité par ham_mer le 06-01-2005 à 14:16:54
n°940322
nraynaud
lol
Posté le 07-01-2005 à 15:12:26  profilanswer
 

Code :
  1. treeListeStats.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
  2.   public void valueChanged(TreeSelectionEvent e) {
  3.     label.setText(e.getNewLeadSelectionPath().getLastPathComponent().toString());
  4. });


 
(oui je pourrais me faire TT pour ça mais je m'en fout, j'ai bien picolé au resto)

mood
Publicité
Posté le 07-01-2005 à 15:12:26  profilanswer
 

n°940324
benou
Posté le 07-01-2005 à 15:13:25  profilanswer
 

nraynaud a écrit :


(oui je pourrais me faire TT pour ça mais je m'en fout, j'ai bien picolé au resto)


 :??:


---------------
ma vie, mon oeuvre - HomePlayer
n°940331
nraynaud
lol
Posté le 07-01-2005 à 15:17:33  profilanswer
 

travail maché, tout ça ...

n°940334
benou
Posté le 07-01-2005 à 15:19:10  profilanswer
 

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 ...


---------------
ma vie, mon oeuvre - HomePlayer
n°940598
ham_mer
Posté le 07-01-2005 à 19:12:49  profilanswer
 

nraynaud a écrit :

Code :
  1. treeListeStats.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
  2.   public void valueChanged(TreeSelectionEvent e) {
  3.     label.setText(e.getNewLeadSelectionPath().getLastPathComponent().toString());
  4. });




 
OK merci beaucoup pour la réponse !
Je pense avoir compris le fonctionnement mais alors tes accolades je ne les comprend pas  :cry: ...
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 ??  :heink:


Message édité par ham_mer le 07-01-2005 à 19:17:38
n°940611
glod 2
Votre trajet, notre projet.
Posté le 07-01-2005 à 19:20:58  profilanswer
 

ham_mer a écrit :

OK merci beaucoup pour la réponse !
Je pense avoir compris le fonctionnement mais alors tes accolades je ne les comprend pas  :cry: ...
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 ??  :heink:


c'est parce c'est une classe incluse, c'est très troublant en effet au début :)

n°940613
benou
Posté le 07-01-2005 à 19:22:31  profilanswer
 

elle est anonyme en plus ...


---------------
ma vie, mon oeuvre - HomePlayer
n°940620
ham_mer
Posté le 07-01-2005 à 19:26:35  profilanswer
 

Merci mais je ne comprend par toutes ces accolades ! (et oui j'ai du mal la!)

n°940634
glod 2
Votre trajet, notre projet.
Posté le 07-01-2005 à 19:32:45  profilanswer
 

benou a écrit :

elle est anonyme en plus ...


oui anonyme en plus, j'ai pas voulu l'accabler :D

n°940643
ham_mer
Posté le 07-01-2005 à 19:42:19  profilanswer
 

merci les gars :D
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 !!!!


Message édité par ham_mer le 08-01-2005 à 19:09:47
n°949298
ham_mer
Posté le 08-01-2005 à 19:12:39  profilanswer
 

Help please :D !

n°949304
benou
Posté le 08-01-2005 à 19:33:26  profilanswer
 

help quoi ?
t'as encore un problème ? lequel ?


---------------
ma vie, mon oeuvre - HomePlayer
n°949322
ham_mer
Posté le 08-01-2005 à 21:07:25  profilanswer
 

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

n°949332
ham_mer
Posté le 08-01-2005 à 21:34:15  profilanswer
 

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 !

n°949338
ham_mer
Posté le 08-01-2005 à 21:48:15  profilanswer
 

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 !

n°949636
nraynaud
lol
Posté le 09-01-2005 à 22:14:32  profilanswer
 

non, il faut parcourir un treepath en maintenant un compteur toi-même.

n°950492
ham_mer
Posté le 11-01-2005 à 00:12:26  profilanswer
 

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 ??

n°950494
the real m​oins moins
Posté le 11-01-2005 à 00:26:01  profilanswer
 
n°950684
TBone
Pouet.
Posté le 11-01-2005 à 13:14:07  profilanswer
 

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.


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
n°951410
nraynaud
lol
Posté le 12-01-2005 à 08:39:22  profilanswer
 

TBone > explique ?

n°951552
TBone
Pouet.
Posté le 12-01-2005 à 12:47:59  profilanswer
 

je trouvais juste que l'adjectif "louche" n'était pas des plus heureux dans "avec des trucs louches pour handicapés".


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
n°951560
nraynaud
lol
Posté le 12-01-2005 à 12:56:37  profilanswer
 

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.

n°951567
TBone
Pouet.
Posté le 12-01-2005 à 13:01:23  profilanswer
 

dans ce cas je comprends mieux ta phrase, pas de soucis :)


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Jtree : récupérer le noeud qui a le focus...

 

Sujets relatifs
[java 1.5] problème de type[Java] Mettre une image de fond dans un container [Resolu]
récupérer ce qu'on écrit ds un TextFieldDécouper une image en java
[JAVA] Plus haut niveau que les socketJ'aimerais me remettre au Java ...
Récuperer différentes valeurs d'une plage de cellulesUtilisation d'une DLL dans Java
focus and click[JDBC][SQL3][Oracle] récupérer un objet de la base
Plus de sujets relatifs à : [Java] Jtree : récupérer le noeud qui a le focus...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR