【发布时间】:2014-01-11 05:12:15
【问题描述】:
我正在用 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 中?
【问题讨论】:
-
我也遇到了同样的问题,请问您在此期间找到解决方案了吗?
-
不,很遗憾,我还没有找到解决方案;如果有的话,我会在这里发布。我不得不放弃按钮的按住功能。我能建议的最多的是使有问题的 UI 元素需要拖动而不是按住,因为拖动的行为至少可以让点击通过。 ://
-
谢谢。我正在使用 JOGL2 开发 OpenGL 应用程序。当我使用 Swing 窗口时,我的鼠标行为和你一样有问题。但是,如果我改用 NEWT 窗口,它会立即报告鼠标按下,所以我猜 NEWT 有一种方法可以告诉操作系统立即报告事件。
-
是否有可以使用的鼠标悬停事件?或指示光标在元素内的东西?
-
是 32 位还是 64 位?
标签: java swing windows-7 touch