如何检测用户正在使用触控板而不是Java摆动中的鼠标?

2022-09-02 10:57:33

我有一个Java swing应用程序,它使用“可泛”的JComponent来显示大数据。当用户移动鼠标滚轮时,我听这些事件,并从滚动量更新JComponent的内容。

我希望有不同的行为,具体取决于用户是否

  • 使用经典鼠标
  • 使用触摸板,就像在现代Mac笔记本电脑上可以找到的触摸板一样。

如何检测到用户正在使用鼠标滚轮与触控板生成滚动事件?我依靠java 1.6 swing,我不能去javaFX。

问题背后的故事:我只是想在用户使用鼠标滚轮时为滚动事件添加一种很酷的惯性感觉。但是,当然,在MacOSX上,触控板内置了自己的惯性。所以我想决定我是否应该产生惯性运动。


答案 1

Java Swing是一种古老的技术,它支持传统的鼠标滚轮旋转事件。

当您使用旧的滚轮鼠标或滚轮触控板时,它将读取硬件滚轮的旋转。

当您使用现代激光鼠标时,鼠标移动将转换为旋转运动。

当您使用像现代Mac笔记本电脑中的触摸触控板一样时,滚动手势将被转换为旋转运动,单次和双击作为左键和右键单击(基于操作系统鼠标垫配置)。

您可以使用库来详细检查输入设备,如果您的鼠标或触控板通过USB连接到计算机,则可以尝试使用J-USB库

至于内部硬件,您首先必须确定操作系统的类型,在此基础上,您可以获得Java中的系统和硬件信息

最后,如果您的应用程序与用户交互,我建议询问用户他们正在使用哪种类型的鼠标,并将其存储在配置文件或其他文件中。


答案 2

对于MacOS,您可以在Java中获取所有触摸板事件,我已经搜索了一段时间,只是回答了我自己的问题。把这个留在这里,以防其他人开始进入同一个兔子洞

是什么取代了Java 9中的GesterUtilities。