AWT/Swing: recuperer les coordonnes du curseur souris lors du traitement d'un KeyEvent

1 réponse
Avatar
Bonjour,

je cherche a recuperer les coordonnees du curseur souris dans un Canvas
lorsqu'une certaine touche du clavier est pressee.

La seule solution que j'ai trouvee pour l'instant consiste a implementer a
la fois KeyListener et MouseMotionListener, et dans le corps de
mouseMoved(), stoker dans une variable l'evenement MouseEvent, pour
finalement en extraire les coordonnees dans keyPressed() lorsque la touche
en question est pressee...
Ca me parait un peu lourd et couteux en perf : mouseMoved() va etre appele
tres souvent et mettre a jour une variable pour memoriser le dernier
MouseEvent, et ce dans 99% des cas pour rien...

d'autres suggestions pour recuperer les coordonnees du curseur (peut on par
exemple artificiellement faire un fire d'event de type MouseEvent par code,
pour ensuite l'intercepter et recuperer le coordonnees?)

merci

1 réponse

Avatar
Slideboy
hello!

Ce que tu peux faire est déclarer ton MouseMotionListener dans une variable
(monListener) si ce n'est pas encore le cas - et pas directement dans le
addMouseMotionListener().
Ensuite, lors du keyPressed, tu fais addMouseMotionListener(monListener),
puis tu le retires avec removeMouseMotionListener(monListener) lors du
keyReleased()
De ce fait ton listener n'est actif que lorsque ta touche est pressée.
D'autre part, tu n'auras plus besoin de stocker les coordonnees de ta souris
puisque tu traiteras l'évenement directement dans ton MouseMotionListener.

sb

<EC> a écrit dans le message news: 3f12ed7a$0$10854$
Bonjour,

je cherche a recuperer les coordonnees du curseur souris dans un Canvas
lorsqu'une certaine touche du clavier est pressee.

La seule solution que j'ai trouvee pour l'instant consiste a implementer a
la fois KeyListener et MouseMotionListener, et dans le corps de
mouseMoved(), stoker dans une variable l'evenement MouseEvent, pour
finalement en extraire les coordonnees dans keyPressed() lorsque la touche
en question est pressee...
Ca me parait un peu lourd et couteux en perf : mouseMoved() va etre appele
tres souvent et mettre a jour une variable pour memoriser le dernier
MouseEvent, et ce dans 99% des cas pour rien...

d'autres suggestions pour recuperer les coordonnees du curseur (peut on
par

exemple artificiellement faire un fire d'event de type MouseEvent par
code,

pour ensuite l'intercepter et recuperer le coordonnees?)

merci