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。谢谢。

4

2 回答 2

3

获取JFrame 在屏幕上的位置并相应地转换您的鼠标位置。所有扩展组件的对象,包括 JFrame,都有方法getLocationOnScreen()。因此,再次使用此方法,获取 JFrame 的位置,然后找到鼠标的相对位置,包括它所在的位置以及您想要的位置。

这可以用小学代数来解决。

编辑
您可能希望只创建一次机器人对象,并在需要时简单地使用该对象,而不是每次都重新创建它。

于 2012-07-11T00:26:05.773 回答
3

能得到的东西,

  1. JFrame 在屏幕上的位置。
  2. 一旦您知道屏幕上的位置,您就可以添加这些 (x,y) 并在 JFrame 中获取新位置。
  3. 如果计算后的位置大于大小,JFrame则将 x 或 y 设置为 MAX 当前大小JFrame(如果坐标是完全动态的)

视觉上是这样的,

在此处输入图像描述

在上图中,屏幕上的位置JFrame是 (50,50),这意味着对于内部的组件,这些坐标变为 (0,0) JFrame。现在,在屏幕上获取鼠标位置,JFrame您可以在 JFrame 中说一些随机所需的坐标,然后将这些屏幕位置 50 添加到其中。

于 2012-07-11T00:32:54.260 回答