我有一个测试 FEST 应用程序,它使用 AWT 机器人来模拟 Swing 界面上的某些操作。我的问题是,在机器人测试执行期间移动鼠标指针似乎会取消一些编程操作,例如按列标题。如果在执行过程中没有触摸任何东西,则光标将单独移动到目标并点击它。
有没有办法阻止该应用程序的鼠标用户输入,直到测试完成?
也许不是一个 block ,而是一种忽略事件、强制 EDT 完成或屏蔽机器人的方法,当然我们会很感激
最佳答案
也许您可以使用 native 终端命令禁用键盘和鼠标。即 Windows 的 cmd.exe 和 Linux 的终端(取决于应用程序是否必须可移植 check os name,然后运行正确的命令),但是我不确定这是否会使 Robot
无用。但我认为不是。
Windows:
cmd.exe /c %Homedrive%\windows\rundll32.exe mouse,disable
cmd.exe /c %Homedrive%\windows\rundll32.exe keyboard,disable
对于 Linux,请参阅 here
附录:
据我所知,在纯 Java 中,如果不使用 JNI 来禁用用户的键盘和鼠标输入,就不可能实现。
这里有一个很棒的链接,用于在 Java 中使用 JNI 来禁用鼠标和键盘:Java Global Keyboard / Mouse Hook - JNI
关于java - Java Swing 中阻止鼠标输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728289/