当前位置:  开发笔记 > 编程语言 > 正文

如何在Java中设置鼠标的位置?

如何解决《如何在Java中设置鼠标的位置?》经验,为你挑选了3个好方法。

我正在使用Java进行一些Swing GUI工作,我认为我的问题相当简单; 如何设置鼠标的位置?



1> Daniel..:

正如其他人所说,这可以通过使用来实现Robot.mouseMove(x,y).但是,当在多监视器情况下工作时,此解决方案会出现故障,因为机器人使用主屏幕的坐标系,除非您另行指定.

这是一个允许您传递任何基于点的全局屏幕坐标的解决方案:

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;
}


@ Daniel - 自从你在这里回复已经多年了,但是今天我找到了它,它已经解决了我多年来因无意中点击鼠标重新定位文本光标而遇到的问题.我很想使用Robot.mouseMove,直到我看到你的评论.奇怪的是,我刚刚开始使用多显示器设置!既然你使用了我不熟悉的类,我感到震惊的是我所要做的就是复制你的代码,做一些导入,然后调用它.做得好!谢谢!!

2> Matt..:

你需要使用机器人

此类用于生成本机系统输入事件,以用于测试自动化,自运行演示以及需要控制鼠标和键盘的其他应用程序.Robot的主要目的是促进Java平台实现的自动化测试.

使用类生成输入事件不同于将事件发布到AWT事件队列或AWT组件,因为事件是在平台的本机输入队列中生成的.例如,Robot.mouseMove实际上将移动鼠标光标而不是仅生成鼠标移动事件...



3> OscarRyz..:

Robot.mouseMove(X,Y)

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有