设置光标在JFrame中的位置

4

我有一个程序使用下面的代码:

public void mouseMoved(MouseEvent e) {
    mousex = e.getX();
    mousey = e.getY();

    if(mousex >= 700) {
        try {
            Robot robot = new Robot();

            robot.mouseMove(0, 0);
        } catch (AWTException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }
    if(mousex <= 100) {
        Robot robot;
        try {
            robot = new Robot();
            robot.mouseMove(0, 0);
        } catch (AWTException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }
}

除了一个问题,其它都很好。它设置的是屏幕上的光标位置而不是 JFrame 上的光标位置。同时,当我写下 if(mousex >= 700),它也是从屏幕上获取鼠标位置。我需要知道如何改为获取 JFrame 上的鼠标位置。谢谢。

2个回答

3
获取JFrame在屏幕上的位置,并根据此位置简单地转换鼠标位置。所有继承组件,包括JFrame的对象都有方法getLocationOnScreen()。因此,再次使用此方法获取JFrame的位置,然后找到鼠标的相对位置,包括其所在位置和所需位置。
这可以通过初中代数来解决。
编辑 您可能希望仅创建一次Robot对象,并在需要时直接使用该对象,而不是每次重新创建它。

3

你可以获得以下内容:

  1. JFrame在屏幕上的位置。
  2. 一旦你知道了屏幕上的位置,就可以将这些(x,y)相加并获得框架内的新位置。
  3. 如果计算后的位置超过了JFrame的大小,则将x或y设置为当前JFrame的最大大小(如果坐标是完全动态的)

可视化如下所示:

enter image description here

在上图中,JFrame在屏幕上的位置为(50,50),这意味着这些坐标对于JFrame内部组件来说变成了(0,0)。现在,在JFrame内获取鼠标在屏幕上的位置,只需指定一个希望的随机坐标,并将这些屏幕位置50相加即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接