模块 java.desktop

类 MouseWheelEvent

所有已实现的接口:
Serializable

public class MouseWheelEvent extends MouseEvent
指示鼠标滚轮在组件中旋转的事件。

滚轮鼠标是用滚轮代替中间按钮的鼠标。该轮可以朝向或远离用户旋转。鼠标滚轮最常用于滚动,但也可以用于其他用途。

MouseWheelEvent 对象被传递给每个注册为使用组件的 addMouseWheelListener 方法接收“有趣”鼠标事件的 MouseWheelListener 对象。每个这样的监听器对象都会获得一个包含鼠标事件的MouseEvent

由于鼠标滚轮与滚动组件的特殊关系,MouseWheelEvents 的传递方式与其他 MouseEvents 略有不同。这是因为,虽然其他 MouseEvents 通常会影响鼠标光标正下方的 Component 上的更改(例如,单击按钮时),但 MouseWheelEvents 通常会在远离鼠标光标的地方产生影响(在 ScrollPane 内的 Component 上移动滚轮应该滚动 ScrollPane 上的滚动条之一)。

MouseWheelEvents 从鼠标光标下方的 Component 开始传递。如果组件上未启用 MouseWheelEvents,则事件将传送到启用了 MouseWheelEvents 的第一个祖先 Container。这通常是启用滚轮滚动的 ScrollPane。源组件和 x,y 坐标将相对于事件的最终目的地(ScrollPane)。这允许在不修改 ScrollPane 的情况下将复杂的 GUI 安装到 ScrollPane 中,并允许将所有 MouseWheelEvents 传递到 ScrollPane 以进行滚动。

一些 AWT 组件是使用本机小部件实现的,这些小部件显示自己的滚动条并处理自己的滚动。适用于此的特定组件因平台而异。当鼠标滚轮移到其中一个组件上时,事件将直接传送到本机小部件,而不是传播到祖先。

平台提供了对移动鼠标滚轮时应该发生的滚动量的自定义。两个最常见的设置是滚动一定数量的“单位”(通常是基于文本的组件中的文本行)或整个“块”(类似于向上翻页/向下翻页)。 MouseWheelEvent 提供了符合底层平台设置的方法。用户可以随时更改这些平台设置。 MouseWheelEvents 反映了最新的设置。

MouseWheelEvent 类包括获取鼠标滚轮旋转“点击”次数的方法。 getWheelRotation() 方法返回与轮子旋转的凹口数相对应的整数“咔嗒声”。除了此方法外,MouseWheelEvent 类还提供了 getPreciseWheelRotation() 方法,该方法在发生部分旋转时返回双倍的“点击次数”。 getPreciseWheelRotation() 方法在鼠标支持高分辨率滚轮(例如没有槽口的自由旋转滚轮)时很有用。应用程序可以通过使用此方法更精确地处理鼠标滚轮事件而受益,从而使视觉感知更流畅。

自从:
1.4
参见:
  • 字段详细信息

  • 构造方法详细信息

    • MouseWheelEvent

      public MouseWheelEvent(Component  source, int id, long when, int modifiers, int x, int y, int clickCount, boolean popupTrigger, int scrollType, int scrollAmount, int wheelRotation)
      使用指定的源组件、类型、修饰符、坐标、滚动类型、滚动量和滚轮旋转构造一个 MouseWheelEvent 对象。

      绝对坐标 xAbs 和 yAbs 设置为源在屏幕上的位置加上相对坐标 x 和 y。如果源未显示,xAbs 和 yAbs 将设置为零。

      请注意,传入无效的 id 会导致未指定的行为。如果 sourcenull,此方法将抛出 IllegalArgumentException

      参数:
      source - 发起事件的 Component
      id - 标识事件的整数
      when - 给出事件发生时间的长整数
      modifiers - 事件期间按下修饰键(shift、ctrl、alt、meta)
      x - 鼠标位置的水平 x 坐标
      y - 鼠标位置的垂直 y 坐标
      clickCount - 与事件关联的鼠标点击次数
      popupTrigger - boolean,如果此事件是弹出菜单的触发器则为真
      scrollType - 响应此事件应发生的滚动类型;有效值为 WHEEL_UNIT_SCROLLWHEEL_BLOCK_SCROLL
      scrollAmount - 对于 scrollType WHEEL_UNIT_SCROLL ,要滚动的单位数
      wheelRotation - 鼠标滚轮旋转的“点击”整数
      抛出:
      IllegalArgumentException - 如果 source 为空
      参见:
    • MouseWheelEvent

      public MouseWheelEvent(Component  source, int id, long when, int modifiers, int x, int y, int xAbs, int yAbs, int clickCount, boolean popupTrigger, int scrollType, int scrollAmount, int wheelRotation)
      使用指定的源组件、类型、修饰符、坐标、绝对坐标、滚动类型、滚动量和滚轮旋转构造一个 MouseWheelEvent 对象。

      请注意,传入无效的 id 会导致未指定的行为。如果 sourcenull,此方法将抛出 IllegalArgumentException

      即使将不一致的相对坐标值和绝对坐标值传递给构造方法,仍会创建 MouseWheelEvent 实例并且不会抛出异常。

      参数:
      source - 发起事件的 Component
      id - 标识事件的整数
      when - 给出事件发生时间的长整数
      modifiers - 事件期间按下修饰键(shift、ctrl、alt、meta)
      x - 鼠标位置的水平 x 坐标
      y - 鼠标位置的垂直 y 坐标
      xAbs - 鼠标位置的绝对水平 x 坐标
      yAbs - 鼠标位置的绝对垂直 y 坐标
      clickCount - 与事件关联的鼠标点击次数
      popupTrigger - boolean,如果此事件是弹出菜单的触发器则为真
      scrollType - 响应此事件应发生的滚动类型;有效值为 WHEEL_UNIT_SCROLLWHEEL_BLOCK_SCROLL
      scrollAmount - 对于 scrollType WHEEL_UNIT_SCROLL ,要滚动的单位数
      wheelRotation - 鼠标滚轮旋转的“点击”整数
      抛出:
      IllegalArgumentException - 如果 source 为空
      自从:
      1.6
      参见:
    • MouseWheelEvent

      public MouseWheelEvent(Component  source, int id, long when, int modifiers, int x, int y, int xAbs, int yAbs, int clickCount, boolean popupTrigger, int scrollType, int scrollAmount, int wheelRotation, double preciseWheelRotation)
      使用指定的源组件、类型、修饰符、坐标、绝对坐标、滚动类型、滚动量和滚轮旋转构造一个 MouseWheelEvent 对象。

      请注意,传递无效的 id 参数会导致未指定的行为。如果 source 等于 null,此方法将抛出 IllegalArgumentException

      即使将不一致的相对坐标值和绝对坐标值传递给构造函数,仍会创建 MouseWheelEvent 实例并且不会抛出异常。

      参数:
      source - 发起事件的 Component
      id - 标识事件的整数值
      when - 一个长值,给出事件发生的时间
      modifiers - 事件期间按下修饰键(shift、ctrl、alt、meta)
      x - 鼠标位置的水平 x 坐标
      y - 鼠标位置的垂直 y 坐标
      xAbs - 鼠标位置的绝对水平 x 坐标
      yAbs - 鼠标位置的绝对垂直 y 坐标
      clickCount - 与事件关联的鼠标点击次数
      popupTrigger - boolean,true 如果此事件是弹出菜单的触发器
      scrollType - 响应此事件应发生的滚动类型;有效值为 WHEEL_UNIT_SCROLLWHEEL_BLOCK_SCROLL
      scrollAmount - 对于 scrollType WHEEL_UNIT_SCROLL ,要滚动的单位数
      wheelRotation - 鼠标滚轮旋转的“点击”整数
      preciseWheelRotation - 鼠标滚轮旋转的双倍“点击次数”
      抛出:
      IllegalArgumentException - 如果 source 为空
      自从:
      1.7
      参见:
  • 方法详情

    • getScrollType

      public int getScrollType()
      返回响应此事件应发生的滚动类型。这是由原生平台决定的。合法值是:
      • MouseWheelEvent.WHEEL_UNIT_SCROLL
      • MouseWheelEvent.WHEEL_BLOCK_SCROLL
      返回:
      MouseWheelEvent.WHEEL_UNIT_SCROLL 或 MouseWheelEvent.WHEEL_BLOCK_SCROLL,具体取决于本机平台的配置。
      参见:
    • getScrollAmount

      public int getScrollAmount()
      返回每次单击鼠标滚轮旋转应滚动的单位数。仅当 getScrollType 返回 MouseWheelEvent.WHEEL_UNIT_SCROLL 时有效
      返回:
      要滚动的单位数,如果 getScrollType 返回 MouseWheelEvent.WHEEL_BLOCK_SCROLL 则为未定义的值
      参见:
    • getWheelRotation

      public int getWheelRotation()
      以整数形式返回鼠标滚轮旋转的“点击”次数。如果鼠标支持高分辨率滚轮,则可能会发生部分旋转。在这种情况下,该方法返回零,直到累积了完整的“点击”。
      返回:
      如果鼠标滚轮向上/远离用户旋转则为负值,如果鼠标滚轮向下/朝向用户旋转则为正值
      参见:
    • getPreciseWheelRotation

      public double getPreciseWheelRotation()
      返回鼠标滚轮旋转的“点击”次数,作为双精度值。如果鼠标支持高分辨率滚轮,则可能会发生部分旋转。在这种情况下,返回值将包含小数“点击”。
      返回:
      如果鼠标滚轮向上或远离用户旋转则为负值,如果鼠标滚轮向下或朝向用户旋转则为正值
      自从:
      1.7
      参见:
    • getUnitsToScroll

      public int getUnitsToScroll()
      这是一种方便的方法,可帮助实现常见情况的 MouseWheelListener - 将 ScrollPane 或 JScrollPane 滚动符合平台设置的量。 (但请注意,ScrollPaneJScrollPane 已经内置了此功能。)

      当滚动类型为 MouseWheelEvent.WHEEL_UNIT_SCROLL 时,此方法返回要滚动的单位数,并且只有在 getScrollType 返回 MouseWheelEvent.WHEEL_UNIT_SCROLL 时才应调用。

      滚动方向、滚轮移动量和滚轮滚动的平台设置均已考虑在内。此方法不会也不能考虑 Adjustable/Scrollable 单位增量的值,因为这会因滚动组件而异。

      如何在监听中使用此方法的简化示例:

       mouseWheelMoved(MouseWheelEvent event) {
         ScrollPane sp = getScrollPaneFromSomewhere();
         Adjustable adj = sp.getVAdjustable()
         if (MouseWheelEvent.getScrollType() == WHEEL_UNIT_SCROLL) {
           int totalScrollAmount =
             event.getUnitsToScroll() *
             adj.getUnitIncrement();
           adj.setValue(adj.getValue() + totalScrollAmount);
         }
       }
       
      返回:
      根据鼠标滚轮旋转的方向和数量以及本机平台的滚轮滚动设置滚动的单位数
      参见:
    • paramString

      public String  paramString()
      返回标识此事件的参数字符串。此方法对于事件记录和调试很有用。
      重写:
      paramString 在类 MouseEvent
      返回:
      标识事件及其属性的字符串