如何在Java中设置鼠标的位置?
我正在用Java做一些Swing GUI工作,我认为我的问题相当简单;如何设置鼠标的位置 您需要使用 此类用于生成本机系统输入事件,用于测试自动化、自运行演示以及其他需要控制鼠标和键盘的应用程序。Robot的主要目的是促进Java平台实现的自动化测试 使用类生成输入事件不同于将事件发布到AWT事件队列或AWT组件,因为事件是在平台的本机输入队列中生成的。例如,如何在Java中设置鼠标的位置?,java,user-interface,swing,mouse,Java,User Interface,Swing,Mouse,我正在用Java做一些Swing GUI工作,我认为我的问题相当简单;如何设置鼠标的位置 您需要使用 此类用于生成本机系统输入事件,用于测试自动化、自运行演示以及其他需要控制鼠标和键盘的应用程序。Robot的主要目的是促进Java平台实现的自动化测试 使用类生成输入事件不同于将事件发布到AWT事件队列或AWT组件,因为事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove将实际移动鼠标光标,而不仅仅是生成鼠标移动事件 查看课程。正如其他人所说,这可以通过以下方法实现。但是,当在
Robot.mouseMove
将实际移动鼠标光标,而不仅仅是生成鼠标移动事件
查看课程。正如其他人所说,这可以通过以下方法实现。但是,当在多监视器情况下工作时,此解决方案有一个缺点,因为机器人使用主屏幕的坐标系工作,除非您另有指定 以下是一个允许您传递任何基于点的全局屏幕坐标的解决方案:
public void moveMouse(Point p) {
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
// Search the devices for the one that draws the specified point.
for (GraphicsDevice device: gs) {
GraphicsConfiguration[] configurations =
device.getConfigurations();
for (GraphicsConfiguration config: configurations) {
Rectangle bounds = config.getBounds();
if(bounds.contains(p)) {
// Set point to screen coordinates.
Point b = bounds.getLocation();
Point s = new Point(p.x - b.x, p.y - b.y);
try {
Robot r = new Robot(device);
r.mouseMove(s.x, s.y);
} catch (AWTException e) {
e.printStackTrace();
}
return;
}
}
}
// Couldn't move to the point, it may be off screen.
return;
}
代码本身如下所示:
char escCode = 0x1B;
System.out.print(String.format("%c[%d;%df",escCode,row,column));
这段代码本身是不完整的,所以我建议将它放在一个方法中,并调用类似“positionCursor(int行,int列)”的名称
以下是完整的代码(方法和代码):
@丹尼尔——你已经好几年没有回复了,但今天我找到了它,它解决了我几个月来一直存在的一个问题,就是不经意的鼠标点击重新定位文本光标。在我读到你的评论之前,我一直想用Robot.mouseMove。奇怪的是,我刚刚开始使用多显示器设置!因为您使用了我不熟悉的类,所以我感到震惊的是,我所要做的就是复制您的代码,进行一些导入,然后调用它。干得好谢谢
void positionCursor(int row, int column) {
char escCode = 0x1B;
System.out.print(String.format("%c[%d;%df",escCode,row,column));
}