我正在使用
Robot
实例以编程方式按键。使用扩展 Thread
的类在 while 循环内按下这些键。
我的应用程序只有一个窗口,即主窗口。
即使我每次按下启动线程的按钮时都请求将焦点放在正确的窗口上,但有时按键事件会在其他地方启动,而不是我的应用程序。
为什么会出现这种情况?
这是片段:
try {
Robot robot = new Robot();
while(!stopped)
{
fireRandomKey(robot);
Thread.sleep(1000);
}
} catch (AWTException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
如果您的目标是模拟用户交互,则必须在发送按键事件之前使用 Robot 来模拟用户鼠标事件(例如在 JTextField 中单击)。
这样,您将免受外部互动的影响,这些互动可以吸引您的注意力(桌面通知、其他应用程序等......)