Module java.desktop
Package java.awt.event

Class MouseWheelEvent

所有已实现的接口:
Serializable

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

滚轮鼠标是一种鼠标,其中间按钮被滚轮取代。这个滚轮可以向用户旋转或远离用户。鼠标滚轮最常用于滚动,尽管也可能有其他用途。

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

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

MouseWheelEvents从鼠标光标下方的组件开始传递。如果组件上未启用MouseWheelEvents,则事件将传递给启用MouseWheelEvents的第一个祖先容器。这通常将是启用了滚动的ScrollPane。源组件和x、y坐标将相对于事件的最终目的地(ScrollPane)设置。这允许将复杂的GUI安装到ScrollPane中而无需修改,并且所有MouseWheelEvents都将传递到ScrollPane以进行滚动。

一些AWT组件是使用显示自己的滚动条并处理自己的滚动的本机小部件实现的。这种情况为真的特定组件将因平台而异。当鼠标滚轮移动到这些组件之一上时,事件将直接传递给本机小部件,而不会传播到祖先。

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

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

自从:
1.4
参见:
  • Field Details

  • Constructor Details

    • 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 - 一个布尔值,如果此事件是弹出菜单的触发器,则为true
      scrollType - 响应此事件时应进行的滚动类型;有效值为WHEEL_UNIT_SCROLLWHEEL_BLOCK_SCROLL
      scrollAmount - 对于scrollType WHEEL_UNIT_SCROLL,应滚动的单位数
      wheelRotation - 鼠标滚轮旋转的整数“点击”次数
      抛出:
      IllegalArgumentException - 如果source为null
      参见:
    • 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 - 一个布尔值,如果此事件是弹出菜单的触发器,则为true
      scrollType - 响应此事件应进行的滚动类型;有效值为WHEEL_UNIT_SCROLLWHEEL_BLOCK_SCROLL
      scrollAmount - 对于scrollType WHEEL_UNIT_SCROLL,要滚动的单位数
      wheelRotation - 鼠标滚轮旋转的“点击”次数的整数
      抛出:
      IllegalArgumentException - 如果source为null
      自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 - 一个布尔值,如果此事件是弹出菜单的触发器,则为true
      scrollType - 响应此事件应进行的滚动类型;有效值为WHEEL_UNIT_SCROLLWHEEL_BLOCK_SCROLL
      scrollAmount - 对于scrollType WHEEL_UNIT_SCROLL,要滚动的单位数
      wheelRotation - 鼠标滚轮旋转的“点击”次数的整数
      preciseWheelRotation - 鼠标滚轮旋转的“点击”次数的双精度值
      抛出:
      IllegalArgumentException - 如果source为null
      自1.7起:
      参见:
  • Method Details

    • 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时才应调用。

      滚动方向、滚轮移动量和用于滚动的平台设置都已考虑在内。此方法不会考虑并且也无法考虑可调整/可滚动单位增量的值,因为这将在滚动组件之间变化。

      以下是此方法在监听器中可能如何使用的简化示例:

        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
      返回:
      标识事件及其属性的字符串