Module  javafx.graphics
软件包  javafx.scene.input

Class ScrollEvent

  • All Implemented Interfaces:
    SerializableCloneable


    public final class ScrollEvent
    extends GestureEvent
    滚动事件表示用户通过鼠标滚轮,轨迹板,触摸屏或其他类似设备执行滚动。

    当通过触摸手势(例如在触摸屏上拖动手指)产生滚动时,它被SCROLL_STARTEDSCROLL_FINISHED事件包围。 在滚动期间更改涉及的触摸点数量被认为是新的手势,因此每次touchCount更改时都会传送一对SCROLL_FINISHEDSCROLL_STARTED通知。 当滚动是由鼠标滚轮旋转引起的,只有一次性SCROLL事件被传递,而没有启动/完成的环境。 如果在给定的平台上滚动惯性激活,则SCROLL事件isInertia()返回true可以在SCROLL_FINISHED之后。

    该事件被传送到在手势开始时在手势坐标上选择的最顶端的节点 - 即使坐标在手势期间改变,也将整个手势传送到同一节点。 对于鼠标滚轮旋转,事件被传递到在鼠标光标位置拾取的最顶层节点。 交付与当前焦点所有者无关。

    该事件提供两种不同类型的滚动值:基于像素和基于字符/线的。 基本的deltaXdeltaY值用作滚动的像素数( totalDeltaXtotalDeltaY包含整个手势的累积值,鼠标滚轮的零)给出合理的结果。 对于滚动文本(或其他基于行的内容作为表),如果可用,应使用textDelta值。 textDeltaXUnitstextDeltaYUnits确定如何解释textDeltaXtextDeltaY值。 如果单位设置为NONE ,则基于文本的值不可用(不由底层平台提供),并且需要使用基于像素的值。

    作为所有手势,滚动可以是直接的(直接在具体的坐标上直接执行,如在触摸屏上 - 所有触摸中的中心点通常用作手势坐标)或间接(间接执行在跟踪板或鼠标 - 鼠标光标位置通常用作手势坐标)。

    例如,滚动图形节点可以通过以下代码实现:

       node.setOnScroll(new EventHandler<ScrollEvent>() { @Override public void handle(ScrollEvent event) { node.setTranslateX(node.getTranslateX() + event.getDeltaX()); node.setTranslateY(node.getTranslateY() + event.getDeltaY()); } });  

    根据所有平台上的系统设置,基于文本的组件的滚动事件处理程序应包含以下逻辑:

       switch(event.getTextDeltaYUnits()) { case LINES: // scroll about event.getTextDeltaY() lines break; case PAGES: // scroll about event.getTextDeltaY() pages break; case NONE: // scroll about event.getDeltaY() pixels break; }  
    从以下版本开始:
    JavaFX 2.0
    另请参见:
    Serialized Form
    • 字段详细信息

      • SCROLL

        public static final EventType<ScrollEvent> SCROLL
        当用户执行滚动操作(例如旋转鼠标滚轮或在触摸屏上拖动手指)时,会发生此事件。
      • SCROLL_STARTED

        public static final EventType<ScrollEvent> SCROLL_STARTED
        当检测到滚动手势时,会发生此事件。 鼠标滚轮不会发生。
        从以下版本开始:
        JavaFX 2.2
      • SCROLL_FINISHED

        public static final EventType<ScrollEvent> SCROLL_FINISHED
        当滚动手势结束时,会发生此事件。 鼠标滚轮不会发生。
        从以下版本开始:
        JavaFX 2.2
    • 构造方法详细信息

      • ScrollEvent

        public ScrollEvent​(Object source,
                           EventTarget target,
                           EventType<ScrollEvent> eventType,
                           double x,
                           double y,
                           double screenX,
                           double screenY,
                           boolean shiftDown,
                           boolean controlDown,
                           boolean altDown,
                           boolean metaDown,
                           boolean direct,
                           boolean inertia,
                           double deltaX,
                           double deltaY,
                           double totalDeltaX,
                           double totalDeltaY,
                           ScrollEvent.HorizontalTextScrollUnits textDeltaXUnits,
                           double textDeltaX,
                           ScrollEvent.VerticalTextScrollUnits textDeltaYUnits,
                           double textDeltaY,
                           int touchCount,
                           PickResult pickResult)
        构造新的ScrollEvent事件。
        参数
        source - 事件的来源。 可以为null。
        target - 事件的目标。 可以为null。
        eventType - 事件的类型。
        x - 相对于场景的x。
        y - 相对于现场的y。
        screenX - 相对于屏幕的x坐标。
        screenY - 相对于屏幕的y坐标。
        shiftDown - 如果按shift键, shiftDown true。
        controlDown - 如果按下控制修饰符, controlDown true。
        altDown - 如果按住alt修饰符, altDown true。
        metaDown - 如果按下了元修饰符, metaDown true。
        direct - 如果事件是由直接输入设备引起的, direct true。 GestureEvent.isDirect()
        inertia - 如果表示已经完成的手势的惯性。
        deltaX - 水平滚动量
        deltaY - 垂直滚动量
        totalDeltaX - 累积水平滚动量
        totalDeltaY - 累积垂直滚动量
        textDeltaXUnits - 水平文本滚动量单位
        textDeltaX - 水平文本滚动量
        textDeltaYUnits - 垂直文本滚动量单位
        textDeltaY - 垂直文本滚动量
        touchCount - 接触点数
        pickResult - 选择结果。 可以为null,在这种情况下,基于场景坐标和目标构建没有任何进一步值的2D选取结果
        从以下版本开始:
        JavaFX 8.0
      • ScrollEvent

        public ScrollEvent​(EventType<ScrollEvent> eventType,
                           double x,
                           double y,
                           double screenX,
                           double screenY,
                           boolean shiftDown,
                           boolean controlDown,
                           boolean altDown,
                           boolean metaDown,
                           boolean direct,
                           boolean inertia,
                           double deltaX,
                           double deltaY,
                           double totalDeltaX,
                           double totalDeltaY,
                           ScrollEvent.HorizontalTextScrollUnits textDeltaXUnits,
                           double textDeltaX,
                           ScrollEvent.VerticalTextScrollUnits textDeltaYUnits,
                           double textDeltaY,
                           int touchCount,
                           PickResult pickResult)
        构造具有null源和目标的新的ScrollEvent事件
        参数
        eventType - 事件的类型。
        x - 相对于场景的x。
        y - 相对于现场的y。
        screenX - 相对于屏幕的x坐标。
        screenY - 相对于屏幕的y坐标。
        shiftDown - 如果按shift键, shiftDown true。
        controlDown - 如果按下控制修饰符, controlDown true。
        altDown - 如果按住alt修饰符, altDown true。
        metaDown - 如果按下了元修饰符, metaDown true。
        direct - 如果事件是由直接输入设备引起的, direct true。 GestureEvent.isDirect()
        inertia - 如果表示已经完成的手势的惯性。
        deltaX - 水平滚动量
        deltaY - 垂直滚动量
        totalDeltaX - 累积水平滚动量
        totalDeltaY - 累积垂直滚动量
        textDeltaXUnits - 水平文本滚动量单位
        textDeltaX - 水平文本滚动量
        textDeltaYUnits - 垂直文本滚动量单位
        textDeltaY - 垂直文本滚动量
        touchCount - 接触点数
        pickResult - 选择结果。 可以为null,在这种情况下,基于场景坐标构建没有任何进一步值的2D选取结果
        从以下版本开始:
        JavaFX 8.0
      • ScrollEvent

        public ScrollEvent​(EventType<ScrollEvent> eventType,
                           double x,
                           double y,
                           double screenX,
                           double screenY,
                           boolean shiftDown,
                           boolean controlDown,
                           boolean altDown,
                           boolean metaDown,
                           boolean direct,
                           boolean inertia,
                           double deltaX,
                           double deltaY,
                           double totalDeltaX,
                           double totalDeltaY,
                           double multiplierX,
                           double multiplierY,
                           ScrollEvent.HorizontalTextScrollUnits textDeltaXUnits,
                           double textDeltaX,
                           ScrollEvent.VerticalTextScrollUnits textDeltaYUnits,
                           double textDeltaY,
                           int touchCount,
                           PickResult pickResult)
        构造具有null源和目标的新的ScrollEvent事件
        参数
        eventType - 事件的类型。
        x - 相对于场景的x。
        y - 相对于场景的y。
        screenX - 相对于屏幕的x坐标。
        screenY - 相对于屏幕的y坐标。
        shiftDown - 如果按shift键, shiftDown true。
        controlDown - 如果按下控制修饰符, controlDown true。
        altDown - 如果按住alt修饰符, altDown true。
        metaDown - 如果按下了元修饰符, metaDown true。
        direct - 如果事件是由直接输入设备引起的, direct true。 GestureEvent.isDirect()
        inertia - 如果表示已经完成的手势的惯性。
        deltaX - 水平滚动量
        deltaY - 垂直滚动量
        totalDeltaX - 累积水平滚动量
        totalDeltaY - 累积垂直滚动量
        multiplierX - 用于将轮转换为像素的X乘数
        multiplierY - 用于将轮转动转换为像素的Y乘数
        textDeltaXUnits - 水平文本滚动量单位
        textDeltaX - 水平文本滚动量
        textDeltaYUnits - 垂直文本滚动量单位
        textDeltaY - 垂直文本滚动量
        touchCount - 接触点数
        pickResult - 选择结果。 可以为null,在这种情况下,基于场景坐标构建没有任何进一步值的2D选取结果
        从以下版本开始:
        JavaFX 8.0
    • 方法详细信息

      • getDeltaX

        public double getDeltaX​()
        获取水平滚动量。 该值应解释为要滚动的像素数。 当滚动基于文本的内容时,应首先考虑textDeltaXtextDeltaXUnits值。

        该值的符号与坐标系相反(当您向右滚动时,内容实际上需要向左)。 所以返回的值可以简单地添加到内容的X坐标。

        结果
        水平滚动的像素数
      • getDeltaY

        public double getDeltaY​()
        获取垂直滚动量。 该值应解释为要滚动的像素数。 当滚动基于行的内容时,应首先考虑textDeltaYtextDeltaYUnits值。

        该值的符号与坐标系相反(当您向下滚动时,内容实际上需要上升)。 所以返回的值可以简单地添加到内容的Y坐标中。

        结果
        垂直滚动的像素数
      • getTotalDeltaX

        public double getTotalDeltaX​()
        获取整个手势的累积水平滚动量。 该值应被解释为相对于手势开始时的状态滚动的像素数。 包含鼠标滚轮滚动的零。

        该值的符号与坐标系相反(当您向右滚动时,内容实际上需要向左)。 所以返回的值可以简单地添加到内容的X坐标中。

        结果
        手势期间水平滚动的像素数
        从以下版本开始:
        JavaFX 2.2
      • getTotalDeltaY

        public double getTotalDeltaY​()
        获取整个手势的累积垂直滚动量。 该值应被解释为相对于手势开始时的状态滚动的像素数。 包含鼠标滚轮滚动的零。

        该值的符号与坐标系相反(当您向下滚动时,内容实际上需要上升)。 所以返回的值可以简单地添加到内容的Y坐标中。

        结果
        在手势期间垂直滚动的像素数
        从以下版本开始:
        JavaFX 2.2
      • getTextDeltaXUnits

        public ScrollEvent.HorizontalTextScrollUnits getTextDeltaXUnits​()
        获取基于文本滚动的水平滚动单位。 返回值表示如何解释getTextDeltaX()值。 如果返回值为NONE ,则基于文本的滚动值不可用,需要使用基于像素的getDeltaX()值。
        结果
        用于基于文本的滚动的水平滚动单位
      • getTextDeltaYUnits

        public ScrollEvent.VerticalTextScrollUnits getTextDeltaYUnits​()
        获取基于文本滚动的垂直滚动单位。 返回值表示如何解释getTextDeltaY()值。 如果返回值为NONE ,则基于文本的滚动值不可用,需要使用基于像素的getDeltaY()值。
        结果
        用于基于文本滚动的垂直滚动单位
      • getTextDeltaX

        public double getTextDeltaX​()
        获取基于水平文本的滚动量。 该值应根据getTextDeltaXUnits()值进行解释。
        结果
        水平滚动的单位数量,如果基于文本的水平滚动数据不可用,则 getTextDeltaXUnits()返回 NONE
      • getTextDeltaY

        public double getTextDeltaY​()
        获取垂直的基于文本的滚动量。 该值应根据getTextDeltaYUnits()值进行解释。
        结果
        垂直滚动的单位数量,如果基于文本的垂直滚动数据不可用,则 getTextDeltaYUnits()返回 NONE
      • getTouchCount

        public int getTouchCount​()
        获得导致此事件的触摸点数。 对于非触摸源设备作为鼠标滚轮和手势完成后的惯性事件返回零。
        结果
        导致此事件的触点数
        从以下版本开始:
        JavaFX 2.2
      • getMultiplierX

        public double getMultiplierX​()
        获取用于将鼠标滚轮旋转单位转换为像素的乘数
        结果
        x乘数
        从以下版本开始:
        JavaFX 8.0
      • getMultiplierY

        public double getMultiplierY​()
        获取用于将鼠标滚轮旋转单位转换为像素的乘数
        结果
        y乘数
        从以下版本开始:
        JavaFX 8.0
      • toString

        public String toString​()
        返回此 ScrollEvent对象的字符串表示形式。
        重写:
        toStringGestureEvent
        结果
        这个 ScrollEvent对象的字符串表示形式。
      • copyFor

        public ScrollEvent copyFor​(Object newSource,
                                   EventTarget newTarget)
        说明从类别GestureEvent复制
        使用指定的事件源和目标创建并返回此事件的副本。 如果源或目标设置为null ,它将被替换为NULL_SOURCE_TARGET值。
        重写:
        copyForGestureEvent
        参数
        newSource - 复制事件的新来源
        newTarget - 复制事件的新目标
        结果
        事件副本与新的源和目标
      • copyFor

        public ScrollEvent copyFor​(Object newSource,
                                   EventTarget newTarget,
                                   EventType<ScrollEvent> type)
        用给定的字段替换给定事件的副本。
        参数
        newSource - 复制事件的新来源
        newTarget - 复制事件的新目标
        type - 新的eventType
        结果
        事件副本与字段被替换
        从以下版本开始:
        JavaFX 8.0
      • getEventType

        public EventType<ScrollEvent> getEventType​()
        描述从类复制: Event
        获取此事件的事件类型。 同一个Event类的对象可以有不同的事件类型。 这些事件类型进一步指定发生什么样的事件。
        重写:
        getEventTypeGestureEvent
        结果
        事件类型