2014-01-11 66 views
10

我正在开发Java中的Swing应用程序。该程序将在专用的Windows 7触摸屏机器上运行,据我所知,这个程序应该是在正常运行下运行的唯一程序。Windows 7触摸屏+ Java Swing =延迟鼠标事件

我注意到Windows 7的触摸屏界面有这个东西,它会阻止mousedown事件。由于“点击并按住右键”手势,Windows 7将不会实际发送应用程序鼠标停止事件,直到:

  • 用户“touch ups”(抬起手指触摸,在该点既向下和向上被发送)
  • 移动其手指(在该点的点击成为拖动)
  • 或右点击圆手势超时(后约5-6秒)

简而言之,这意味着在发送鼠标按下事件之前,按钮不会在应用程序中显得沮丧(并且永远不会拖拉用快速的水龙头完全压抑)。但是,最近更严重的是,这意味着功能需要按住不会产生,而不会对普通用户造成大量混淆。

公司在发展这一点上来不及转身,并从头开始对其他问题提供了许多触摸库的一个开始。 (他们要求重做整个应用程序的组件层次结构,这根本是不可行的。另外,使用鼠标事件编码的东西必须使用触摸事件进行重新编码,而且我们并不需要多点触摸。 ..)

是的,我试图简单地关闭触摸并按住右键单击手势。不幸的是,这样做只是禁用绘制一个圆圈,指示手指周围的右击手势和后续右键点击。它不能消除潜在的问题:延迟的鼠标停止事件最多六秒钟

我的问题:有没有一种办法:

  • 理想的情况下,指示窗口我的应用程序是触摸准备程序,从而可以立即发送关闭事件(不过,我想,还是送鼠标事件而不是触摸事件)?看来,内置的软键盘可以正常工作。我只想让我的Java应用程序也这样做。
  • 完全禁用计算机上的延迟,但仍提供基本的触摸功能?
  • 可能像this question, which seems to be asking about the same phenomenon那样简单,但在Java中?
+0

我遇到了同样的问题,您是否在此期间找到了解决方案? –

+2

不,我不幸找到了解决方案;如果有的话,我会在这里发布。我不得不放弃按钮的按住功能。我可以建议的最多的是使UI元素有问题需要拖动而不是按住,因为拖动操作至少可以让点击通过。 :/ – Tustin2121

+0

谢谢。我正在使用JOGL2开发OpenGL应用程序。当我使用一个Swing窗口时,我会遇到与您一样的有问题的鼠标行为。但是,如果我使用NEWT窗口,它会毫无延迟地报告鼠标按键,所以我认为NEWT有一种方法可以告诉操作系统无延迟地报告事件。 –

回答

1

通常,此类行为由设备上安装的触摸设备驱动程序控制。我见过的所有触控制造商都有控制面板应用程序,可以让您自定义触控行为。因此,例如,您可以告诉驱动程序在收到触摸时立即发送鼠标点击,而不是暂时延迟,以防止发生输入事件的偶然触摸。