[英]How to get location of a mouse click relative to a swing window
假设我在 Java Swing JFrame 中。 我点击我的鼠标。 我想在 GUI 中获取鼠标单击的位置。 在java中,该行
int mouseX = MouseInfo.getPointerInfo().getLocation.x;
似乎给出了鼠标在整个屏幕上的位置。 我如何获得它相对于 GUI 的位置?
从MouseListener
方法中,您可以执行以下操作:
@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
}
只需通过以下方式将其添加到您的Component
:
component.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
}
});
参考:
您可以将MouseListener
添加到 GUI 组件,其左上角像素应作为 [0,0] 点受到威胁,并从 MouseEvent 中获取 x 和 y
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);
看看Component.getMousePosition
。
如果
Component
直接位于鼠标指针下方,则返回鼠标指针在此Component
坐标空间中的位置,否则返回null
。 如果Component
未显示在屏幕上,即使鼠标指针位于将显示Component
的区域上方,此方法也会返回 null。 如果Component
被其他Component
或本机窗口部分或完全遮挡,则仅当鼠标指针位于Component
的未遮挡部分上方时,此方法才返回非null
值。
final Point mousePos = component.getMousePosition();
if (mousePos != null) {
final int mouseX = mousePos.x;
final int mouseY = mousePos.y;
...
}
...或者,如果您使用MouseListener
,您可能会看到我的原始评论...
尝试使用
MouseEvent.getPoint
。
以上将返回相对于侦听器绑定到的组件的鼠标点。
public void mouseClicked(final MouseEvent evt) {
final Point pos = evt.getPoint();
final int x = pos.x;
final int y = pos.y;
}
MouseEvent有方法 getX() 和 getY() 返回相对于源组件的位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.