Module  java.desktop
软件包  java.awt.event

Class MouseWheelEvent

  • All Implemented Interfaces:
    Serializable


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

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

    将MouseWheelEvent对象传递给每个MouseWheelListener对象,该对象使用组件的addMouseWheelListener方法注册接收“有趣”的鼠标事件。 每个这样的侦听器对象得到包含鼠标事件的MouseEvent

    由于鼠标滚轮与滚动组件的特殊关系,MouseWheelEvents的传递与其他MouseEvents有所不同。 这是因为当其他MouseEvents通常影响鼠标光标下方的组件更改(例如,单击按钮时),MouseWheelEvents通常会从鼠标光标中移除效果(在ScrollPane中的组件上移动滚轮滚动ScrollPane上的滚动条之一)。

    MouseWheelEvents从鼠标光标下面的组件开始传递。 如果在组件上未启用MouseWheelEvents,那么事件将被发送到启用了MouseWheelEvents的第一个祖先Container。 这通常是启用滚轮滚动的ScrollPane。 源组件和x,y坐标将相对于事件的最终目标(ScrollPane)。 这样就可以将一个复杂的GUI安装到一个ScrollPane中,而不用修改ScrollPane,并将所有的MouseWheelEvents传递给ScrollPane进行滚动。

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

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

    MouseWheelEvent课程包括获取旋转鼠标滚轮的“点击次数”的方法。 getWheelRotation()方法返回与轮的旋转次数相对应的“点击次数”整数。 除了这种方法之外, MouseWheelEvent类还提供了getPreciseWheelRotation()方法,它可以在发生部分旋转的情况下返回双倍数量的“点击”。 如果鼠标支持高分辨率车轮,例如自由旋转的车轮,无凹槽,则getPreciseWheelRotation()方法非常有用。 应用程序可以通过使用这种方法更精确地处理鼠标滚轮事件,从而使视觉感知更平滑。

    从以下版本开始:
    1.4
    另请参见:
    MouseWheelListenerScrollPaneScrollPane.setWheelScrollingEnabled(boolean)JScrollPaneJScrollPane.setWheelScrollingEnabled(boolean)Serialized Form
    • 构造方法详细信息

      • 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和yAb设置为零。

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

        参数
        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为空
        另请参见:
        MouseEvent(java.awt.Component, int, long, int, int, int, int, boolean)MouseEvent(java.awt.Component, int, long, int, int, int, int, int, int, boolean, int)
      • 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导致未指定的行为。 此方法抛出IllegalArgumentException如果sourcenull

        即使将相对和绝对坐标的不一致值传递给构造函数,仍将创建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为空
        从以下版本开始:
        1.6
        另请参见:
        MouseEvent(java.awt.Component, int, long, int, int, int, int, boolean)MouseEvent(java.awt.Component, int, long, int, int, int, int, int, int, boolean, int)
      • 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参数会导致未指定的行为。 此方法抛出IllegalArgumentException如果source等于null

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

        参数
        source - 发起事件的 Component
        id - 标识事件的整数值
        when - 给出事件发生时间的长 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为空
        从以下版本开始:
        1.7
        另请参见:
        MouseEvent(java.awt.Component, int, long, int, int, int, int, boolean)MouseEvent(java.awt.Component, int, long, int, int, int, int, int, int, boolean, int)
    • 方法详细信息

      • getScrollAmount

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

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

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

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

        当滚动类型为MouseWheelEvent.WHEEL_UNIT_SCROLL时,此方法返回滚动的单位数,只有当getScrollType返回MouseWheelEvent.WHEEL_UNIT_SCROLL时,才能调用getScrollType

        滚动方向,车轮移动量和车轮滚动的平台设置都被考虑在内。 此方法不能也不能考虑可调/可滚动单位增量的值,因为这将在滚动组件之间变化。

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

          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);
              }
          } 
        结果
        基于鼠标滚轮旋转的方向和数量滚动的单位数量,以及本机平台的滚轮滚动设置
        另请参见:
        getScrollType()getScrollAmount()MouseWheelListenerAdjustableAdjustable.getUnitIncrement()ScrollableScrollable.getScrollableUnitIncrement(java.awt.Rectangle, int, int)ScrollPaneScrollPane.setWheelScrollingEnabled(boolean)JScrollPaneJScrollPane.setWheelScrollingEnabled(boolean)
      • paramString

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