Windows 7触摸屏+ Java Swing =延迟鼠标事件

时间:2014-01-11 05:12:15

标签: java swing windows-7 touch

我正在用Java开发一个Swing应用程序。该程序将在专用的Windows 7触摸屏机器上运行,据我所知,该程序应该是在正常操作下运行的唯一程序。

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

  • 用户“触摸”(触摸时抬起手指,此时向下和向上都会发送)
  • 移动他们的手指(此时点击变为拖动)
  • 或右键单击圆圈手势超时(约5-6秒后)

平凡地说,这意味着在发送鼠标按下事件之前按钮在应用程序上看起来不会被按下(并且永远不会通过快速点击来完全按下按钮)。但是,最近,更严重的是,这意味着需要按住不能的功能,而不会给普通用户造成大量混淆。

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

是的,我试图简单地关闭触摸并按住右键单击手势。不幸的是,这样做只会禁用绘制圆圈,表示手指周围的右键手势以及随后右击的火焰。它不会消除潜在的问题:延迟鼠标按下事件最多六秒

我的问题:有没有办法:

  • 理想情况下,向Windows表明我的应用程序是一个触控式应用程序,因此它会立即发送事件(但我想,仍然会发送鼠标事件而不是触摸事件)?我可以看到内置的软键盘正常工作。我只是希望我的Java应用程序也这样做。
  • 完全在计算机上禁用延迟,但仍然提供基本的触控功能?
  • 可能像this question, which seems to be asking about the same phenomenon那样简单,但在Java中?

1 个答案:

答案 0 :(得分:1)

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