java - Java Swing 中阻止鼠标输入

标签 java swing awtrobot mouse-cursor fest

我有一个测试 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/

相关文章:

java - 从 ArrayList 中检索单个值

java - LibGDX GraphicBug TiledMap 正交相机

java - 让 Java Robot 输入 for 循环中的内容

java - 在测试期间模拟鼠标点击。 JUnit,JavaFX

java - 链接到 html 页面

java - 找不到maven依赖?

java - 拥有内部 JPanel

java - 防止 JavaFX 窗口窃取焦点

java - 如何通过双击正确删除 JTable 中的行?

JAVA:虚拟鼠标