在java.awt.Robot.keyPress()/ mousePress()之后重新获得焦点

时间:2010-01-28 08:09:57

标签: java awt

我编写的应用程序仅使用键盘控制另一个应用程序。更具体地说,当键盘上按下某个键时,应用程序会模拟按键和鼠标点击。例如,按下'x'键可以模拟鼠标右键角落中的[X],然后稍微休息2秒,然后按“确认”以确认退出对话框。满容易。我正在用Java开发这个应用程序。

使用java.awt.Robot可以轻松发送按键或鼠标。我正面临一个小问题。假设我已经配置了一个键,它将点击屏幕上的某个位置。问题是连续按键不再被捕获,因为我的应用程序因鼠标点击窗口外而失去了焦点。

我现在的问题是:确保我的主要应用程序保持关注的最佳方法是什么?在按键和鼠标点击发出后,有没有办法再次关注我的应用程序?还有更好的方法吗?

提前致谢。

3 个答案:

答案 0 :(得分:2)

如果您的申请失去了重点。因为您或您的机器人点击了其他地方,机器人必须在发送新密钥之前再次单击该应用程序。在c / c ++中你可以强制关注应用程序(一个非平凡的任务),而不是Java!

答案 1 :(得分:0)

您可能需要查看Component.requestFocus()以查看是否可以执行您想要的操作。

请注意,窗口聚焦具有非常依赖于平台的行为,因此您可能需要进行相当多的测试,以确保您的代码在所有情况下都能满足您的需求。

答案 2 :(得分:0)

我设法防止应用程序失去Java中的所有焦点。

通过在框架(或对话框)上放置一个WindowFocusListener并在setVisible(false)中调用setVisible(true)后跟windowLostFocus,该组件一旦消失就会重新出现(不是最漂亮的)解决方案,但确实有效。)

然后调用component.requestFocus()你的机器人应该可以在停止的地方继续