r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
由于某种原因,它不起作用。当我手动单击ENTER时,它确实起作用。如何解决这个问题?
需要手动按下某些对话框时?由于在发生此问题之前会出现一些对话框,因此使用机械手单击ENTER可以正常工作。那么,似乎是一个特殊的对话框?
是否有“特殊对话框”? 如果是,如何自动回车然后单击这些?
在Windows 7和10上。
编辑:
整个代码如下。
Robot r = new Robot();
r.keyPress(KeyEvent.VK_SHIFT);
r.keyPress(KeyEvent.VK_F10);
r.keyRelease(KeyEvent.VK_F10);
r.keyRelease(KeyEvent.VK_SHIFT);
r.keyPress(KeyEvent.VK_DOWN);
r.keyRelease(KeyEvent.VK_DOWN);
r.keyPress(KeyEvent.VK_DOWN);
r.keyRelease(KeyEvent.VK_DOWN);
r.keyPress(KeyEvent.VK_DOWN);
r.keyRelease(KeyEvent.VK_DOWN);
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
// ABOVE ENTER WORKS FINE! THEN A NEW WINDOW IS OPENED
// HERE IT STOPS WORKING!
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
r.keyPress(KeyEvent.VK_DOWN);
r.keyRelease(KeyEvent.VK_DOWN);
在我放置命令的位置,它停止工作。
在该命令之前,将打开一个新窗口。现在,也许下一个ENTER不再被认可是因为没有重点?
但是,我不这么认为。因为当我手动单击ENTER(不单击其他任何东西或移动鼠标)时,它确实起作用。因此,显然重点就在那里。
From the Java Tutorial: "For a key press to affect a component, the component must have the keyboard focus".
将焦点设置在您希望检测keyPress事件的组件上,如下所示:
对于您的情况,您可能需要检测开窗事件,然后设置焦点。