Event Mouse pour récupérer position de la souris
Bonjour à tous !
Je vous explique mon problème : Je voudrais récupéré la position de la souris au clique dans mon image. J'ai trouver de la doc :
Citation:
A partir d'un composant avec MouseEvent
En enregistrant un MouseEvent auprès de votre composant graphique, vous pouvez avoir accès à la position de la souris relativement à ce composant. Il vous suffira ensuite d'utiliser la méthode getLocationOnScreen() de Component pour calculer la position de la souris par rapport à l'écran.
int x = (int)(mouseEvent.getPoint().getX() + monComposant.getLocationOnScreen().getX());
int y = (int)(mouseEvent.getPoint().getY() + monComposant.getLocationOnScreen().getY());
Vous pouvez aussi utiliser la méthode convertPointToScreen() de la classe javax.swing.SwingUtilities. Par exemple :
MouseEvent event = ...;
Component composant = ...;
Point locationComposant = event.getPoint();
Point locationEcran = SwingUtilities.convertPointToScreen(locationComposant, composant);
Sans composant graphique
A partir de Java 5.0 (Tiger), si vous voulez connaître la position de la souris (même en dehors d'une fenêtre) vous pouvez utiliser l'objet MouseInfo du package java.awt. Par exemple :
PointerInfo pointer = MouseInfo.getPointerInfo();
Point location = pointer.getLocation();
System.out.println("La souris se trouve en "+location);
Attention, l'instance de PointerInfo n'est pas mise à jour automatiquement. Vous devrez en récupérer une nouvelle instance à chaque fois.
Avant Java 5.0, la seule solution possible est de passer par JNI (Java Native Interface). Vous pourrez ainsi avoir accès grâce à des langages plus proches du système aux cooordonnées de la souris à l'écran. Attention tout de même, vous risquez de perdre la portabilité de votre application.
Mais ne vois pas comment l'implémenter.
Voici ma classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class Panneau extends JPanel implements MouseListener {
@Override
public void paintComponent(final Graphics g) {
try {
Image img = ImageIO.read(new File("image.jpg"));
this.setSize(1366, 768);
g.drawImage(img, 0, 0, null);
} catch (IOException e) {
e.printStackTrace();
}
addMouseListener(this);
}
@Override
public void mouseClicked(final MouseEvent event) {
}
} |
merci d'avance =)