Robot.keypress 使用线程:有时不会集中在右边 window

Robot.keypress using a Thread: sometimes doesn't focus on the right window

我正在使用 Robot 实例以编程方式按键。使用扩展 Thread.

的 class 在 while 循环中按下这些键

我的应用只有一个window,主要window。

尽管我每次按下启动线程的按钮时都请求将焦点放在正确的 window 上,但有时按键事件是在别处而不是我的应用程序上启动的。

为什么会这样?

这是片段:

try {
            Robot robot = new Robot(); 

            while(!stopped)
            {
               fireRandomKey(robot);
               Thread.sleep(1000);
            }

    } catch (AWTException e) { 
        e.printStackTrace(); 
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

如果您的目标是模拟用户交互,则必须在发送按键事件之前使用 Robot 模拟用户鼠标事件(例如单击 JTextField)。

这样一来,您就不会受到可以吸引您注意力的外部交互(桌面通知、其他应用程序等...)