IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Evénement JTree


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut Evénement JTree
    Bonjour, je cherche a repérer un événement un peu particulier sur un JTree..
    Il est en effet facile de lever un événement lorsqu'on clique sur un des élément du JTree, personnellement je souhaiterais lever l'événement lorsque l'on passe au dessus d'un élément du JTree
    J'ai essayé ca:
    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
     
    MouseListener ml = new MouseAdapter() {
    			public void mouseEntered(MouseEvent e) {
    				int selRow = jtree.getRowForLocation(e.getX(), e.getY());
    				TreePath selPath = jtree.getPathForLocation(e.getX(), e.getY());
    				if (selRow != -1) {
    					if (e.getClickCount() == 1) {
    						System.out.println(selRow+" "+selPath);
    					} else if (e.getClickCount() == 2) {
    						System.out.println(selRow+" "+selPath);
    					}
    				}
    			}
    		};
    		jtree.addMouseListener(ml);
    Mais ca marche pas des masses...car le mouseEntered se déclenche lorsque que j'entre sur le JTree, ce que je cherche a faire, c'est lever l'événement lorsque j'entre sur un des éléments du JTree (un peu comme un tooltips)
    Voila, si quelqu'un a une piste...je suis preneur
    Merci d'avance.

  2. #2
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Bonjour,
    à la place de :

    MouseAdapter, utilise MouseMotionAdapter
    mouseEntered, utilise mouseMoved

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Merci pour ta réponse rapide...
    Je dois malgré tout mal m'y prendre puisque ca fonctionne pas encore correctement...ca déclenche des événements mais un peu de manière aléatoire (j'arrive d'ailleurs pas a comprendre quand il se déclenche réellement...)
    Par contre je connaissais pas MouseMotionListener...quelle est la différence avec MouseListener?...
    donc, bah ca fonctionne toujours pas, si quelqu'un a une idée..

    Voici ce que j'ai essayer...

    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
     
    MouseMotionListener ml = new MouseMotionAdapter() {
    			public void mouseMoved(MouseEvent e) {
    			int selRow = jtree.getRowForLocation(e.getX(), e.getY());
    				TreePath selPath = jtree.getPathForLocation(e.getX(), e.getY());
    				if (selRow != -1) {
    					if (e.getClickCount() == 1) {
    						System.out.println(selRow+" "+selPath);
    					} else if (e.getClickCount() == 2) {
    						System.out.println(selRow+" "+selPath);
    					}
    				}
    			}
    		};
    		jtree.addMouseMotionListener(ml);
    Merci d'avance...

  4. #4
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Il faut retirer les getClickCountqui n'ont pas de sens sur un événement MOUSE_MOVED. La différence avec MouseListener c'est que MouseMotionListener est le listener dédié aux déplacement souris sur ton composant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MouseMotionListener ml = new MouseMotionAdapter() { 
             public void mouseMoved(MouseEvent e) { 
             int selRow = jtree.getRowForLocation(e.getX(), e.getY()); 
                TreePath selPath = jtree.getPathForLocation(e.getX(), e.getY()); 
                if (selRow != -1) { 
                   // ici tu fais ton traitement
                } 
             } 
          }; 
          jtree.addMouseMotionListener(ml);

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Ca marche nickel chrome!
    Un grand merci a toi!
    De plus je connaissais pas du tout les mouseMotionListener...donc un outil de plus dans ma boite!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JTree] rafraichissement
    Par nurn dans le forum Composants
    Réponses: 12
    Dernier message: 29/07/2005, 14h41
  2. [JTree]problème de rafraichissement
    Par peppena dans le forum Composants
    Réponses: 9
    Dernier message: 20/01/2004, 14h06
  3. [JTree]redimensionnement d'un noeud
    Par grishka dans le forum Composants
    Réponses: 4
    Dernier message: 10/04/2003, 14h33
  4. [JTree] Ouvrir/Fermer l'ensemble des noeuds
    Par Math_Caen dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2003, 14h01
  5. Evènement sur clic droit !?
    Par soccersoft dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/12/2002, 21h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo