在java中给出应用程序焦点

Posted

技术标签:

【中文标题】在java中给出应用程序焦点【英文标题】:give an application focus in java 【发布时间】:2011-06-30 11:34:49 【问题描述】:

我想通过使用 Robot 类将鼠标/键盘事件发送到我正在测试的 Java 应用程序来部分自动化一些集成级别的测试。我希望用户能够单击一个按钮并一次自动发送多个键盘事件。

我从我的机器人测试中生成我想要测试的应用程序(使用 Runtime.exec),然后生成适当的事件。不幸的是,当用户单击按钮时,按钮具有焦点并接收事件,而不是像我想要的那样将事件发送到子进程。我想要一种方法来确保将机器人键盘事件发送到我尝试测试的应用程序。

我想过获取子进程PID,然后使用FG命令将我想要的应用程序带到前台;但这是 Linux 特有的方法。我更喜欢一种同样适用于 Linux 或 Windows 的方法。

【问题讨论】:

可能是***.com/questions/309023/…的骗子。 这是另一种情况。我正在尝试将一个程序置于前台,该程序是运行代码的 java 应用程序的不同进程(子进程)。 哦。是的,我不知道您能否找到一种独立于平台的方式。 【参考方案1】:

我不确切知道您在测试什么或如何测试它,但您应该查看Sikuli - 它是一种可视化技术,并且有一些方法可以让您自动单击屏幕的一部分想要获得焦点,或使用App.focus("application name")。我真的推荐它。但是使用它不会让您在测试程序时使用计算机做其他事情。

希望有帮助!

【讨论】:

以上是关于在java中给出应用程序焦点的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中没有焦点的情况下监听输入

Java中的事件监听器没有应用程序有焦点? (全局按键检测)

java swing中如何自行丢失焦点?已知怎样获取没找到如何丢失!

Java Swing如何让JFrame获得焦点

mac下java怎么使用助记符

56 java编程思想——创建窗口和程序片 用户接口API