在Java Swing中嵌入鼠标输入

问题描述:

我有一个测试FEST应用程序,它使用AWT机器人模拟Swing界面上的某些操作。我的问题是,在机器人测试执行过程中移动鼠标指针似乎取消了一些编程操作,如按列标题。如果你在执行过程中不碰任何东西,那么光标就会独立移动到目标并击中目标。在Java Swing中嵌入鼠标输入

有没有什么方法阻止该应用程序的鼠标用户输入,直到测试完成?

也许不是块而是一个办法忽略的事件,力EDT完成或屏蔽机器人,将不胜感激当然

+0

它不应该,但预计不会在短期内。目前仅在Windows中使用。 – Whimusical 2012-07-30 19:40:19

的也许你可以关闭使用本地终端命令的键盘和鼠标。 I.e cmd.exe for Windows和Linux终端(取决于应用程序必须是便携式,只需要check os name然后运行正确的命令),但我不确定这是否会导致Robot无用。我想不是。

的Windows:

的cmd.exe/c%HOMEDRIVE%\ WINDOWS \ RUNDLL32.EXE鼠标,禁用

的cmd.exe/c%HOMEDRIVE%\ WINDOWS \ RUNDLL32.EXE键盘,禁用

和Linux,请参阅here

附录

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

下面是disbaling鼠标和键盘在Java中使用JNI有很大的联系:Java Global Keyboard/Mouse Hook - JNI

+1

林不知道这将是一个很好的选择,因为我将不得不在Java范围之外执行它,我需要机器人在输入就绪模式和非输入就绪模式之间切换。但当然这是一个非常有趣的信息,它也超出了问题的范围,它也是一个开始,如果没有其他任何东西可以从Java以编程方式在Java中完成,我可以依赖它。谢谢!! – Whimusical 2012-07-30 19:45:20

+0

@ user1352530它很高兴,请参阅我的编辑它可能证明富有成果:) – 2012-07-30 19:53:39

如果你是耐寒使用AWT机器人终端到终端的测试发展,然后尝试单独测试,能够只运行检查触摸功能的部分,而所有端到端测试应该在构建服务器上运行。

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