我有一个使用以下代码的程序:
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&gt; = 700)时,它也从屏幕上获取它。我需要知道如何将其更改为jframe。感谢。
答案 0 :(得分:3)
在屏幕上获取JFrame的位置,然后相应地转换鼠标位置。扩展组件的所有对象(包括JFrame)都具有方法getLocationOnScreen()
。再次,使用此方法,获取JFrame的位置,然后找到鼠标的相对位置,无论它在哪里,以及您想要它的位置。
这可以用小学代数来解决。
修改强>
您可能希望只创建一次Robot对象,只需在需要时使用该对象,而不是每次都重新创建它。
答案 1 :(得分:3)
您可以获得的东西,
JFrame
的大小,则将x或y设置为JFrame
的最大当前大小(如果协调完全是动态的)视觉上是这样的,
在上图中,JFrame
屏幕上的位置是(50,50),这意味着JFrame
内的组件的坐标变为(0,0)。现在,在JFrame
内的屏幕上获取鼠标位置,您可以在JFrame中说出一些随机所需的坐标,然后将这些屏幕位置50添加到其中。