区分快速和慢速鼠标滚动

时间:2012-08-28 22:58:50

标签: java mouse awt

为了改善我的应用程序的用户体验,id喜欢区分用户不同的鼠标滚动速度和数量,并相应地采取行动以改善我的GUI用户友好性,我该如何分析它?

1 个答案:

答案 0 :(得分:0)

罗伯特哈维在评论中提出了一个很好的建议,但还远远不够。传递给MouseWheelListener.mouseWheelMoved的MouseWheelEvent包含一些属性,您应该在事件之间的时间之外考虑这些属性。具体做法是:

这些方法中的第一个,MouseWheelEvent.getPreciseWheelRotation,返回用户旋转鼠标的点击次数,将高分辨率鼠标和触控板考虑在内。此数字的绝对值越高,用户滚动鼠标的速度就越快。

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

当然,您应该保留上次滚动事件的时间(您可以使用System.currentTimeMillis()System.nanoTime()来衡量时间增量),滚动事件之间的较短间隔通常意味着更快的滚动。一种可能的解决方案是跟踪用户在一段恒定时间内(例如0.1或0.05秒)移动鼠标的总点击次数,并将交互基于累计滚轮点击次数而不是点击次数。发生在每个事件中。