Acquisition des coordonnées de la souris au clic

cedbont
Acquisition des coordonnées de la souris au clic

Bonjour,
je débute en java et j'aimerais savoir comment acquérir les coordonnées de la souris lorsque je fais un clique gauche.
Pouvez-vous m'aider ?
Merci.

willbback
Evenènement MouseEvent

Dans la classe MouseEvent, tu peux optenir le point où l'évènement c'est produit. Les coordonnées sont relative par rapport au composant qui a reçut l'évènement. Il ne reste plus qu'à faire les calculs en fonction de la fenêtre etc....
MouseEvent.getPoint()
MouseEvent.getX()
MouseEvent.getY()
MosueEvent.getComponent() te fournit le composant qui a reçu le click.
Component.getLocation() te renvoit le coin gauche haut du composant par rapport à la fenêtre java, sinon Component.getLocationOnScreen() te renvoi la position par rapport au bord haut gauche de l'écran, ce qui donne :
pour les positions par rapport à l'écran

int x = mouseEvent.getX()+mouseEvent.getComponent().getLocationOnScreen().getX();
int y = mouseEvent.getX()+mouseEvent.getComponent().getLocationOnScreen().getY();

pour les positions par rapport à la fenêtre
int x = mouseEvent.getX()+mouseEvent.getComponent().getLocation().getX();
int y = mouseEvent.getX()+mouseEvent.getComponent().getLocation().getY();
jrebillat

Tu ne nous as pas précisé avec quoi tu gérais tes fenêtres (AWT, SWT, Swing, ...)
Partons du principe que tu utilise AWT/Swing.

Tu as donc des composants graphiques (dérivés de java.awt.Component) qui ont une méthode addMouseListener(MouseListener mouseListener);

Pour récupérer le MouseEvent dont parle willbback, tu dois d'abord créer une ou des classes dérivées de MouseListener. Ensuite tu associeras des instances de ces classes à tes composants avec la méthode addMouseListener() de la classe Component.
Evidemment dans ta/tes classes dérivées de MouseListener, tu auras surchargé la méthode mouseClicked(MouseEvent evt) . Et voila, dans cette méthode tu as le MouseEvent correspondant au clic, passé en paramètre. Il y a d'autres méthodes intéressantes dans cette classe, regardes-en la description dans le javadoc.

Bien sûr, si ton traitement est très court et dédié à un composant particulier, tu peux faire plus simple avec une dérivation à la volée :

En reprenant le code de willbback cela donnerait :

canvas.addMouseListener( new MouseListener() {
   public void mouseClicked(MouseEvent evt)
  {
    int x = evt.getX()+evt.getComponent().getLocation().getX();
    int y = evt.getX()+evt.getComponent().getLocation().getY();
    ...
  }
 });
cedbont

Merci beaucoup, c'est exactement ce que je voulais savoir.