如何获得相对于挥杆窗口的鼠标单击位置
说我在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) { } });
参考:
- 如何编写鼠标侦听器
看看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; }
您可以将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);
MouseEvent具有getX()和getY()方法,它们返回相对于源组件的位置。