在java.awt.Robot.keyPress()/mousePress()之后重新获得焦点
我正在编写一个只使用键盘控制另一个应用程序的应用程序。更具体地说,当在键盘上按下某个键时,应用程序模拟按键和鼠标单击。例如,按“x”键模拟鼠标单击rop右角的[x],然后小睡2秒钟,然后按“enter”确认退出对话框。很简单。我正在用Java开发这个应用程序 使用java.awt.Robot发送按键或鼠标点击非常简单。我面临一个小问题。假设我配置了一个键,它会在屏幕上的某个地方点击。问题是,连续的按键不再被捕捉,因为我的应用程序由于鼠标在窗口外单击而失去了焦点 我现在的问题是:确保我的主应用程序保持焦点的最佳方式是什么?有没有办法在按键和鼠标点击发出后再次聚焦我的应用程序?有更好的办法吗在java.awt.Robot.keyPress()/mousePress()之后重新获得焦点,java,awt,Java,Awt,我正在编写一个只使用键盘控制另一个应用程序的应用程序。更具体地说,当在键盘上按下某个键时,应用程序模拟按键和鼠标单击。例如,按“x”键模拟鼠标单击rop右角的[x],然后小睡2秒钟,然后按“enter”确认退出对话框。很简单。我正在用Java开发这个应用程序 使用java.awt.Robot发送按键或鼠标点击非常简单。我面临一个小问题。假设我配置了一个键,它会在屏幕上的某个地方点击。问题是,连续的按键不再被捕捉,因为我的应用程序由于鼠标在窗口外单击而失去了焦点 我现在的问题是:确保我的主应用程序
提前感谢。如果您的应用程序失去焦点。因为您或您的机器人单击了其他位置,所以机器人必须在发送新密钥之前再次单击应用程序。在c/c++中,您可以将重点放在应用程序上(一项非常重要的任务),而不是Java 您可能需要查看一下,看看是否可以做您想做的事情
但是,请注意,窗口聚焦具有非常依赖于平台的行为,因此您可能需要进行大量测试,以确保您的代码在所有情况下都符合您的要求。我设法防止应用程序在Java中失去所有焦点 通过将WindowFocusListener放置在框架(或对话框)上,并在
windowLostFocus
中调用setVisible(false)
,然后调用setVisible(true)
,组件将在消失后立即重新显示(不是最漂亮的解决方案,但确实有效)
然后调用
component.requestFocus()
您的机器人应该能够继续它停止的地方查看一些关于如何解决问题的代码会有所帮助。