如何在JavaFx应用程序中检查机器/系统是否启用触摸功能?
我们有一个JavaFx应用程序,在某些情况下,我们需要知道运行应用程序的Windows机器是否启用了触摸功能。仍然无法找到任何合适的解决方案。我没有尝试过,但根据文档:如何在JavaFx应用程序中检查机器/系统是否启用触摸功能?,java,javafx,javafx-8,Java,Javafx,Javafx 8,我们有一个JavaFx应用程序,在某些情况下,我们需要知道运行应用程序的Windows机器是否启用了触摸功能。仍然无法找到任何合适的解决方案。我没有尝试过,但根据文档: Platform.isSupported(ConditionalFeature.INPUT_TOUCH) 及 从JavaDoc: 在嵌入式平台上,JavaFX尝试初始化此 基于所连接的输入外围设备的条件功能。在…上 桌面平台此ConditionalFeature通常默认为 错 定义一组条件(可选)功能。 希望了解特定功能是否可
Platform.isSupported(ConditionalFeature.INPUT_TOUCH)
及
从JavaDoc:
在嵌入式平台上,JavaFX尝试初始化此
基于所连接的输入外围设备的条件功能。在…上
桌面平台此ConditionalFeature通常默认为
错
定义一组条件(可选)功能。希望了解特定功能是否可用的应用程序可以使用以下方式查询: 对于触摸功能,可以使用以下功能:
自:
JavaFX8.0不幸的是,“ConditionalFeature”方法确实不适用于“非嵌入式”系统,例如Surface Pro(可能也适用于其他支持触摸的笔记本电脑)。 但是,在这种情况下,您可以使用
setOnTouchPressed((TouchEvent))
方法至少在应用触摸时进行检测。它工作可靠,区别于触摸板或鼠标。
不幸的是,也没有找到一个在启动时直接检测的解决方案。在桌面平台上,上述两个ConditionalFeature通常默认为false。太棒了,谢谢!这正是我想要的。不过还是需要测试一下。@Leet Falcon是的,当然,这就是我发布它的原因。复制粘贴错误。谢谢你指出这一点。我已经更新了答案。它至少在LinuxMint上有效(在带触摸屏的Asus上返回
true
,在PC上返回false
)。我已经尝试过,但在基于Windows10的平板电脑上返回“false”。也许设置-Dcom.sun.javafx.isEmbedded=true&-Dcom.sun.javafx.touch=true会有所帮助
Platform.isSupported(ConditionalFeature.INPUT_MULTITOUCH)