Java 区分快速鼠标旋转和慢速鼠标旋转

Java 区分快速鼠标旋转和慢速鼠标旋转,java,mouse,awt,Java,Mouse,Awt,为了改善我的应用程序的用户体验,我想区分用户不同的鼠标移动速度和数量,并相应地提高我的GUI用户频率,我该如何分析它?Robert Harvey在评论中提出了一个很好的建议,但这还不够。传递给的MouseWheelEvent包含一些超出事件间隔时间的属性。具体而言: 从返回的单击次数 返回的用户每次单击要滚动的数量。请注意,除非。除非此方法返回MouseWheelEvent.WHEEL\u UNIT\u SCROLL,否则MouseWheelEvent.getScrollAmount将返回未定

为了改善我的应用程序的用户体验,我想区分用户不同的鼠标移动速度和数量,并相应地提高我的GUI用户频率,我该如何分析它?

Robert Harvey在评论中提出了一个很好的建议,但这还不够。传递给的MouseWheelEvent包含一些超出事件间隔时间的属性。具体而言:

  • 从返回的单击次数
  • 返回的用户每次单击要滚动的数量。请注意,除非。除非此方法返回MouseWheelEvent.WHEEL\u UNIT\u SCROLL,否则MouseWheelEvent.getScrollAmount将返回未定义的值
第一个方法是mouseweelevent.getPreciseWheelRotation,它返回用户旋转鼠标的点击次数,并将高分辨率鼠标和轨迹板考虑在内。此数字的绝对值越高,用户滚动鼠标的速度就越快

第二个方法是MouseWheelEvent.getScrollAmount,它告诉用户操作系统用于滚动速度的系统设置。使用Windows控制面板或其他平台上的类似工具,用户可以设置滚轮影响界面更改的速度。如果用户设置了一个非常快的滚轮,您可能应该将中速滚动与另一个平台上的非常快滚动计数相同。用户要求滚动速度更快,因此你的应用程序应该尊重这一点


当然,您应该保留最后一次滚动事件的时间(您可以使用或测量时间增量),滚动事件之间的间隔越短通常意味着滚动速度越快。一种可能的解决方案是跟踪用户在某个固定时间段(例如0.1秒或0.05秒)内移动鼠标的总点击次数,并根据累积的滚轮点击次数而不是每个事件中发生的点击次数进行交互。

您使用哪个框架与鼠标交互?摆动AWT?GWT(即实际上不是Java而是JavaScript)?还有什么吗?我在使用java.awt.event.mouseweelllistener;我应该使用不同的吗?MouseWheelListener没有问题,只要你的应用程序是用AWT或Swing编写的。事实上,这是AFAIK的首选方法。测量鼠标滚轮事件之间的时间。时间间隔越短,用户转动方向盘的速度就越快。谢谢,一个好的滚动处理函数的建议公式是什么,它取决于变量x,即每0.1秒的点击次数?比如,每0.1秒滚动多少dpi取决于用户在该时间段的点击量?如果你加上一个答案,你的答案将是公正的perfect@OfekRon我对你的问题有两个答案。首先,您不应该自己滚动内容——您应该使用一个内置控件来完成这项工作(Swing就是一个例子)。开发Swing的人花了很多精力来实现正确的滚动。其次,如果你没有滚动内容,滚动的速度取决于你的应用程序。例如,如果您正在编写一个用户可以使用滚轮跳跃的游戏,那么您可能应该尝试两种不同的跳跃高度,并选择最好的。