1

我想获得相对于框架的鼠标位置。

MouseInfo 给我绝对位置。

如何获得相对于框架的位置?塔恩克斯。

4

3 回答 3

1

使用 getLocationOnScreen() 获取帧的绝对位置,然后计算相对距离。

于 2012-10-03T01:40:17.813 回答
1

首先,从您当前的范围向上走树到顶部(这将是框架):

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
}
于 2012-10-03T03:36:03.350 回答
1

要计算鼠标相对于框架的位置,必须从框架的位置减去鼠标的绝对位置,从而消除框架左上角到屏幕左上角的无关点。

要获取鼠标相对于框架的位置作为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

于 2015-01-03T20:11:03.373 回答