Disons que je suis dans un Java Swing JFrame. Je clique sur ma souris. Je veux obtenir l'emplacement du clic de souris dans l'interface graphique. En Java, la ligne
int mouseX = MouseInfo.getPointerInfo().getLocation.x;
Semble donner l'emplacement de la souris sur tout l'écran. Comment puis-je obtenir son emplacement par rapport à l'interface graphique?
De MouseListener
méthodes que vous pouvez faire:
@Override
public void mouseClicked(MouseEvent e) {
int x=e.getX();
int y=e.getY();
System.out.println(x+","+y);//these co-ords are relative to the component
}
Ajoutez simplement ceci à votre Component
en:
component.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
}
});
Référence:
Vous pouvez ajouter MouseListener
au composant GUI dont le pixel supérieur gauche doit être traité comme un point [0,0] et obtenir x et y de MouseEvent
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.add(panel);
panel.addMouseListener(new MouseAdapter() {// provides empty implementation of all
// MouseListener`s methods, allowing us to
// override only those which interests us
@Override //I override only one method for presentation
public void mousePressed(MouseEvent e) {
System.out.println(e.getX() + "," + e.getY());
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
Jeter un coup d'œil à Component.getMousePosition
.
Renvoie la position du pointeur de la souris dans l'espace de coordonnées de ce
Component
si leComponent
est directement sous le pointeur de la souris, sinon renvoienull
. Si leComponent
n'apparaît pas à l'écran, cette méthode retourne null même si le pointeur de la souris est au-dessus de la zone où leComponent
serait affiché. Si leComponent
est partiellement ou entièrement masqué par d'autresComponent
ou fenêtres natives, cette méthode renvoie une valeur nonnull
uniquement si le pointeur de la souris est situé au-dessus de la partie non masquée de leComponent
.
final Point mousePos = component.getMousePosition();
if (mousePos != null) {
final int mouseX = mousePos.x;
final int mouseY = mousePos.y;
...
}
... ou, si vous utilisez un MouseListener
, vous pouvez voir mon commentaire d'origine ...
Essayez d'utiliser
MouseEvent.getPoint
.
Ce qui précède renverra le point de la souris par rapport au composant auquel l'écouteur était lié.
public void mouseClicked(final MouseEvent evt) {
final Point pos = evt.getPoint();
final int x = pos.x;
final int y = pos.y;
}
MouseEvent a des méthodes getX () et getY () qui retournent la position par rapport au composant source.