public final class ScrollEvent extends GestureEvent
When the scrolling is produced by a touch gesture (such as dragging a finger
over a touch screen), it is surrounded by the SCROLL_STARTED
and
SCROLL_FINISHED
events. Changing number of involved touch points during
the scrolling is considered a new gesture, so the pair of
SCROLL_FINISHED
and SCROLL_STARTED
notifications is delivered
each time the touchCount
changes. When the scrolling is caused by a mouse
wheel rotation, only a one-time SCROLL
event is delivered, without
the started/finished surroundings. If scrolling inertia is active on the
given platform, some SCROLL
events with isInertia()
returning
true
can come after SCROLL_FINISHED
.
The event is delivered to the top-most node picked on the gesture coordinates in time of the gesture start - the whole gesture is delivered to the same node even if the coordinates change during the gesture. For mouse wheel rotation the event is delivered to the top-most node picked on mouse cursor location. The delivery is independent of current focus owner.
The event provides two different types of scrolling values: pixel-based and
character/line-based. The basic deltaX
and deltaY
values
give reasonable results when used as number of pixels
to scroll (The totalDeltaX
and totalDeltaY
contain the
cumulative values for the whole gesture, zeros for mouse wheel).
For scrolling text (or other line-based content as tables) the
textDelta
values should be used if they are available. The
textDeltaXUnits
and textDeltaYUnits
determine how to
interpret the textDeltaX
and textDeltaY
values. If the
units are set to NONE
, the text-based values are not available
(not provided by the underlying platform) and the pixel-based values
need to be used.
As all gestures, scrolling can be direct (performed directly at the concrete coordinates as on touch screen - the center point among all the touches is usually used as the gesture coordinates) or indirect (performed indirectly as on track pad or with mouse - the mouse cursor location is usually used as the gesture coordinates).
For example, scrolling a graphical node can be achieved by following code:
node.setOnScroll(new EventHandler
A scroll event handler on text-based component behaving
according to system settings on all platforms should contain following logic:
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;
}
Modifier and Type | Class and Description |
---|---|
static class |
ScrollEvent.HorizontalTextScrollUnits
Horizontal text-based scrolling units.
|
static class |
ScrollEvent.VerticalTextScrollUnits
Vertical text-based scrolling units.
|
Modifier and Type | Field and Description |
---|---|
static EventType<ScrollEvent> |
ANY
Common supertype for all scroll event types.
|
static EventType<ScrollEvent> |
SCROLL
This event occurs when user performs a scrolling action such as
rotating mouse wheel or dragging a finger over touch screen.
|
static EventType<ScrollEvent> |
SCROLL_FINISHED
This event occurs when a scrolling gesture ends.
|
static EventType<ScrollEvent> |
SCROLL_STARTED
This event occurs when a scrolling gesture is detected.
|
consumed, eventType, NULL_SOURCE_TARGET, target
source
Constructor and Description |
---|
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)
Constructs new ScrollEvent event with null source and target
|
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)
Constructs new ScrollEvent event with null source and target
|
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)
Constructs new ScrollEvent event.
|
Modifier and Type | Method and Description |
---|---|
ScrollEvent |
copyFor(Object newSource,
EventTarget newTarget)
Creates and returns a copy of this event with the specified event source
and target.
|
ScrollEvent |
copyFor(Object newSource,
EventTarget newTarget,
EventType<ScrollEvent> type)
Creates a copy of the given event with the given fields substituted.
|
double |
getDeltaX()
Gets the horizontal scroll amount.
|
double |
getDeltaY()
Gets the vertical scroll amount.
|
EventType<ScrollEvent> |
getEventType()
Gets the event type of this event.
|
double |
getMultiplierX()
Gets the multiplier used to convert mouse wheel rotation units to pixels
|
double |
getMultiplierY()
Gets the multiplier used to convert mouse wheel rotation units to pixels
|
double |
getTextDeltaX()
Gets the horizontal text-based scroll amount.
|
ScrollEvent.HorizontalTextScrollUnits |
getTextDeltaXUnits()
Gets the horizontal scrolling units for text-based scrolling.
|
double |
getTextDeltaY()
Gets the vertical text-based scroll amount.
|
ScrollEvent.VerticalTextScrollUnits |
getTextDeltaYUnits()
Gets the vertical scrolling units for text-based scrolling.
|
double |
getTotalDeltaX()
Gets the cumulative horizontal scroll amount for the whole gesture.
|
double |
getTotalDeltaY()
Gets the cumulative vertical scroll amount for the whole gesture.
|
int |
getTouchCount()
Gets number of touch points that caused this event.
|
String |
toString()
Returns a string representation of this
ScrollEvent object. |
getPickResult, getSceneX, getSceneY, getScreenX, getScreenY, getX, getY, getZ, isAltDown, isControlDown, isDirect, isInertia, isMetaDown, isShiftDown, isShortcutDown
getSource
public static final EventType<ScrollEvent> ANY
public static final EventType<ScrollEvent> SCROLL
public static final EventType<ScrollEvent> SCROLL_STARTED
public static final EventType<ScrollEvent> SCROLL_FINISHED
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)
source
- the source of the event. Can be null.target
- the target of the event. Can be null.eventType
- The type of the event.x
- The x with respect to the scene.y
- The y with respect to the scene.screenX
- The x coordinate relative to screen.screenY
- The y coordinate relative to screen.shiftDown
- true if shift modifier was pressed.controlDown
- true if control modifier was pressed.altDown
- true if alt modifier was pressed.metaDown
- true if meta modifier was pressed.direct
- true if the event was caused by direct input device. See GestureEvent.isDirect()
inertia
- if represents inertia of an already finished gesture.deltaX
- horizontal scroll amountdeltaY
- vertical scroll amounttotalDeltaX
- cumulative horizontal scroll amounttotalDeltaY
- cumulative vertical scroll amounttextDeltaXUnits
- units for horizontal text-based scroll amounttextDeltaX
- horizontal text-based scroll amounttextDeltaYUnits
- units for vertical text-based scroll amounttextDeltaY
- vertical text-based scroll amounttouchCount
- number of touch pointspickResult
- pick result. Can be null, in this case a 2D pick result
without any further values is constructed
based on the scene coordinates and the targetpublic 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)
eventType
- The type of the event.x
- The x with respect to the scene.y
- The y with respect to the scene.screenX
- The x coordinate relative to screen.screenY
- The y coordinate relative to screen.shiftDown
- true if shift modifier was pressed.controlDown
- true if control modifier was pressed.altDown
- true if alt modifier was pressed.metaDown
- true if meta modifier was pressed.direct
- true if the event was caused by direct input device. See GestureEvent.isDirect()
inertia
- if represents inertia of an already finished gesture.deltaX
- horizontal scroll amountdeltaY
- vertical scroll amounttotalDeltaX
- cumulative horizontal scroll amounttotalDeltaY
- cumulative vertical scroll amounttextDeltaXUnits
- units for horizontal text-based scroll amounttextDeltaX
- horizontal text-based scroll amounttextDeltaYUnits
- units for vertical text-based scroll amounttextDeltaY
- vertical text-based scroll amounttouchCount
- number of touch pointspickResult
- pick result. Can be null, in this case a 2D pick result
without any further values is constructed
based on the scene coordinatespublic 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)
eventType
- The type of the event.x
- The x with respect to the scene.y
- The y with respect to the scene.screenX
- The x coordinate relative to screen.screenY
- The y coordinate relative to screen.shiftDown
- true if shift modifier was pressed.controlDown
- true if control modifier was pressed.altDown
- true if alt modifier was pressed.metaDown
- true if meta modifier was pressed.direct
- true if the event was caused by direct input device. See GestureEvent.isDirect()
inertia
- if represents inertia of an already finished gesture.deltaX
- horizontal scroll amountdeltaY
- vertical scroll amounttotalDeltaX
- cumulative horizontal scroll amounttotalDeltaY
- cumulative vertical scroll amountmultiplierX
- an X multiplier used to convert wheel rotations to pixelsmultiplierY
- an Y multiplier used to convert wheel rotations to pixelstextDeltaXUnits
- units for horizontal text-based scroll amounttextDeltaX
- horizontal text-based scroll amounttextDeltaYUnits
- units for vertical text-based scroll amounttextDeltaY
- vertical text-based scroll amounttouchCount
- number of touch pointspickResult
- pick result. Can be null, in this case a 2D pick result
without any further values is constructed
based on the scene coordinatespublic double getDeltaX()
textDeltaX
and textDeltaXUnits
values should be
considered first.
The sign of the value is reversed compared to the coordinate system
(when you scroll right, the content actually needs to go left). So the
returned value can be simply added to the content's X
coordinate.
public double getDeltaY()
textDeltaY
and textDeltaYUnits
values should be
considered first.
The sign of the value is reversed compared to the coordinate system
(when you scroll down, the content actually needs to go up). So the
returned value can be simply added to the content's Y
coordinate.
public double getTotalDeltaX()
The sign of the value is reversed compared to the coordinate system
(when you scroll right, the content actually needs to go left). So the
returned value can be simply added to the content's X
coordinate.
public double getTotalDeltaY()
The sign of the value is reversed compared to the coordinate system
(when you scroll down, the content actually needs to go up). So the
returned value can be simply added to the content's Y
coordinate.
public ScrollEvent.HorizontalTextScrollUnits getTextDeltaXUnits()
getTextDeltaX()
value. If the returned value is NONE
, the text-based
scrolling value is not available and the pixel-based
getDeltaX()
value needs to be used.public ScrollEvent.VerticalTextScrollUnits getTextDeltaYUnits()
getTextDeltaY()
value. If the returned value is NONE
, the text-based
scrolling value is not available and the pixel-based
getDeltaY()
value needs to be used.public double getTextDeltaX()
getTextDeltaXUnits()
value.getTextDeltaXUnits()
returns NONE
public double getTextDeltaY()
getTextDeltaYUnits()
value.getTextDeltaYUnits()
returns NONE
public int getTouchCount()
public double getMultiplierX()
public double getMultiplierY()
public String toString()
ScrollEvent
object.toString
in class GestureEvent
ScrollEvent
object.public ScrollEvent copyFor(Object newSource, EventTarget newTarget)
Event
null
, it is
replaced by the NULL_SOURCE_TARGET
value.copyFor
in class GestureEvent
newSource
- the new source of the copied eventnewTarget
- the new target of the copied eventpublic ScrollEvent copyFor(Object newSource, EventTarget newTarget, EventType<ScrollEvent> type)
source
- the new source of the copied eventtarget
- the new target of the copied eventeventType
- the new eventTypepublic EventType<ScrollEvent> getEventType()
Event
Event
class can have different event types. These event types further specify
what kind of event occurred.getEventType
in class GestureEvent
Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.