【问题标题】:Block mouse input in Java Swing在 Java Swing 中阻止鼠标输入
【发布时间】:2012-07-28 12:31:22
【问题描述】:

我有一个测试 FEST 应用程序,它使用 AWT 机器人在 Swing 界面上模拟某些动作。我的问题是,在机器人测试执行期间移动鼠标指针似乎会取消一些编程操作,比如按下列标题。如果你在执行过程中没有触摸任何东西,那么光标会单独移动到目标并击中它。

在测试完成之前,有没有办法阻止该应用的鼠标用户输入?

当然,也许不是一个障碍,而是一种忽略事件、强制 EDT 完成或屏蔽机器人的方法

【问题讨论】:

  • 应该,但短期内预计不会。目前仅在 Windows 中使用。

标签: java swing awtrobot mouse-cursor fest


【解决方案1】:

也许您可以使用本机终端命令禁用键盘和鼠标。即 Windows 的 cmd.exe 和 Linux 的终端(取决于应用程序是否必须是可移植的 check os name 然后运行正确的命令)但是我不确定这是否会使 Robot 无用。不过我觉得不会。

窗户:

cmd.exe /c %Homedrive%\windows\rundll32.exe 鼠标,禁用

cmd.exe /c %Homedrive%\windows\rundll32.exe 键盘,禁用

对于 Linux,请参阅 here

附录

据我所知,在纯 Java 中不使用 JNI 来禁用用户的键盘和鼠标输入是不可能的。

这里有一个很好的链接,用于在 Java 中使用 JNI 禁用鼠标和键盘:Java Global Keyboard / Mouse Hook - JNI

【讨论】:

  • 我不确定这是否是一个好的选择,因为我必须在 Java 范围之外执行它,并且我需要机器人在输入就绪和非模式之间切换。但当然,这也是一个非常有趣的信息,也在问题的范围之外,如果从 Java 到 Java 内部无法以编程方式完成其他任何事情,这也是一个我可以依赖的开始。谢谢!!
  • @user1352530 很高兴,请看我的编辑它可能会证明是富有成效的:)
【解决方案2】:

如果您很难使用 AWT 机器人进行端到端测试,那么请尝试将测试分开,以便仅运行检查触及功能的部分,而所有端到端测试都应在构建服务器上运行.

这是 AWT 机器人对在无头构建服务器上完成的 Swing 应用程序的端到端测试的结果: http://travis-ci.org/#!/plokhotnyuk/calculator/jobs/1979904/L538

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    相关资源
    最近更新 更多