我想获得相对于框架的鼠标位置。
MouseInfo 给我绝对位置。
如何获得相对于框架的位置?塔恩克斯。
使用 getLocationOnScreen() 获取帧的绝对位置,然后计算相对距离。
首先,从您当前的范围向上走树到顶部(这将是框架):
Container container = this.getParent();
Container previous = container;
while (container != null)
{
previous = container;
container = container.getParent();
}
上一个是顶部容器
if (previous instanceof JFrame)
{
Point p = ((JFrame)previous).getMousePosition();
System.out.println(p); // or do what you need to with p
}
要计算鼠标相对于框架的位置,必须从框架的位置减去鼠标的绝对位置,从而消除框架左上角到屏幕左上角的无关点。
要获取鼠标相对于框架的位置作为Point:
public Point getLocationRelativeTo() {
int x = frame.getX() - MouseInfo.getPointerInfo().getLocation().x;
int y = frame.getY() - MouseInfo.getPointerInfo().getLocation().y;
return new Point(x, y);
}
要将 x 作为int:
public int getXRelativeTo() {
int x = frame.getX() - MouseInfo.getPointerInfo().getLocation().x;
return x;
}
要将 y 作为int:
public int getXRelativeTo() {
int y = frame.getY() - MouseInfo.getPointerInfo().getLocation().y;
return y;
}
我希望有所帮助。:)
有关更多信息,请访问http://docs.oracle.com/javase/7/docs/api/java/awt/MouseInfo.html