Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java.awt.Robot.keyPress()/mousePress()之后重新获得焦点_Java_Awt - Fatal编程技术网

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

在java.awt.Robot.keyPress()/mousePress()之后重新获得焦点,java,awt,Java,Awt,我正在编写一个只使用键盘控制另一个应用程序的应用程序。更具体地说,当在键盘上按下某个键时,应用程序模拟按键和鼠标单击。例如,按“x”键模拟鼠标单击rop右角的[x],然后小睡2秒钟,然后按“enter”确认退出对话框。很简单。我正在用Java开发这个应用程序 使用java.awt.Robot发送按键或鼠标点击非常简单。我面临一个小问题。假设我配置了一个键,它会在屏幕上的某个地方点击。问题是,连续的按键不再被捕捉,因为我的应用程序由于鼠标在窗口外单击而失去了焦点 我现在的问题是:确保我的主应用程序

我正在编写一个只使用键盘控制另一个应用程序的应用程序。更具体地说,当在键盘上按下某个键时,应用程序模拟按键和鼠标单击。例如,按“x”键模拟鼠标单击rop右角的[x],然后小睡2秒钟,然后按“enter”确认退出对话框。很简单。我正在用Java开发这个应用程序

使用java.awt.Robot发送按键或鼠标点击非常简单。我面临一个小问题。假设我配置了一个键,它会在屏幕上的某个地方点击。问题是,连续的按键不再被捕捉,因为我的应用程序由于鼠标在窗口外单击而失去了焦点

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


提前感谢。

如果您的应用程序失去焦点。因为您或您的机器人单击了其他位置,所以机器人必须在发送新密钥之前再次单击应用程序。在c/c++中,您可以将重点放在应用程序上(一项非常重要的任务),而不是Java

您可能需要查看一下,看看是否可以做您想做的事情


但是,请注意,窗口聚焦具有非常依赖于平台的行为,因此您可能需要进行大量测试,以确保您的代码在所有情况下都符合您的要求。

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

通过将WindowFocusListener放置在框架(或对话框)上,并在
windowLostFocus
中调用
setVisible(false)
,然后调用
setVisible(true)
,组件将在消失后立即重新显示(不是最漂亮的解决方案,但确实有效)


然后调用
component.requestFocus()
您的机器人应该能够继续它停止的地方

查看一些关于如何解决问题的代码会有所帮助。