# Class MouseEvent

java.lang.Object
java.util.EventObject
javafx.event.Event
javafx.scene.input.InputEvent
javafx.scene.input.MouseEvent

All Implemented Interfaces:
  `Serializable, Cloneable`

Direct Known Subclasses:
  `MouseDragEvent`

public class MouseEvent extends InputEvent
When a mouse event occurs, the top-most node under cursor is picked and the event is delivered to it through capturing and bubbling phases described at `EventDispatcher`.

The mouse (pointer's) location is available relative to several coordinate systems: x,y - relative to the origin of the MouseEvent's node, sceneX,sceneY - relative to to the origin of the `Scene` that contains the node, screenX,screenY - relative to origin of the screen that contains the mouse pointer.

## Dragging gestures

There are three types of dragging gestures. They are all initiated by a mouse press event and terminated as a result of a mouse released event, the source node decides which gesture will take place.

The simple press-drag-release gesture is the default. It's best used to allow changing the size of a shape, dragging it around and so on. The whole press-drag-release gesture is delivered to one node. When a mouse button is pressed, the top-most node is picked and all subsequent mouse events are delivered to that same node until the button is released. If a mouse clicked event is generated from these events, it is still delivered to the same node.

During a simple press-drag-release gesture, the other nodes are not involved and don't get any events. If these nodes need to be involved in the gesture, full press-drag-release gesture has to be activated. This gesture is best used for connecting nodes by "wires", dragging nodes to other nodes etc. This gesture type is more closely described at `MouseDragEvent` which contains the events delivered to the gesture targets.

The third gesture type is the platform-supported drag-and-drop gesture. It serves best to transfer data and works also between (not necessarily FX) applications. This gesture type is more closely described at `DragEvent`.

In summary, simple press-drag-release gestures are activated automatically when a mouse button is pressed and delivers all `MouseEvent`s to the gesture source. When you start dragging, eventually the `DRAG_DETECTED` event arrives. In its handler, you can either start a full press-drag-release gesture by calling the `startFullDrag` method on a node or scene - the `MouseDragEvent`s start to be delivered to gesture targets, or you can start drag and drop gesture by calling `startDragAndDrop` method on a node or scene - the system switches into the drag and drop mode and `DragEvent`s start to be delivered instead of `MouseEvent`s. If you don't call any of those methods, the simple press-drag-release gesture continues.

Note that dragging a finger over touch screen produces mouse dragging events, but also scroll gesture events. If it means a conflict in an application (the physical dragging action is handled by two different handlers), the `isSynthesized()` method may be used to detect the problem and make the dragging handlers behave accordingly.

## Mouse enter/exit handling

When the mouse enters a node, the node gets a `MOUSE_ENTERED` event, when it leaves, it gets a `MOUSE_EXITED` event. These events are delivered only to the entered/exited node and seemingly don't go through the capturing/bubbling phases. This is the most common use-case.

When capturing or bubbling is desired, there are `MOUSE_ENTERED_TARGET`/`MOUSE_EXITED_TARGET` events. These events go through capturing/bubbling phases normally. This means that a parent may receive the `MOUSE_ENTERED_TARGET` event when the mouse entered either the parent itself or some of its children. To distinguish between these two cases, the event target can be tested on equality with the node.

These two types are closely connected: `MOUSE_ENTERED`/`MOUSE_EXITED` are subtypes of `MOUSE_ENTERED_TARGET`/`MOUSE_EXITED_TARGET`. During capturing phase, `MOUSE_ENTERED_TARGET` is delivered to the parents. When the event is delivered to the event target (the node that has actually been entered), its type is switched to `MOUSE_ENTERED`. Then the type is switched back to `MOUSE_ENTERED_TARGET` for the bubbling phase. It's still one event just switching types, so if it's filtered or consumed, it affects both event variants. Thanks to the subtype-relationship, a `MOUSE_ENTERED_TARGET` event handler will receive the `MOUSE_ENTERED` event on target.

## Notes

- For triggering context menus see the `ContextMenuEvent`.

Since:
  JavaFX 2.0
See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final EventType<MouseEvent>`
  `ANY`
  Common supertype for all mouse event types.
  `static final EventType<MouseEvent>`
  `DRAG_DETECTED`
  This event is delivered to a node that is identified as a source of a dragging gesture.
  `static final EventType<MouseEvent>`
  `MOUSE_CLICKED`
  This event occurs when a mouse button has been clicked (pressed and released on the same node).
  `static final EventType<MouseEvent>`
  `MOUSE_DRAGGED`
  This event occurs when the mouse moves with a pressed button.
  `static final EventType<MouseEvent>`
  `MOUSE_ENTERED`
  This event occurs when the mouse enters a node.
  `static final EventType<MouseEvent>`
  `MOUSE_ENTERED_TARGET`
  This event occurs when the mouse enters a node.
  `static final EventType<MouseEvent>`
  `MOUSE_EXITED`
  This event occurs when the mouse exits a node.
  `static final EventType<MouseEvent>`
  `MOUSE_EXITED_TARGET`
  This event occurs when the mouse exits a node.
  `static final EventType<MouseEvent>`
  `MOUSE_MOVED`
  This event occurs when the mouse moves within a node and no buttons are pressed.
  `static final EventType<MouseEvent>`
  `MOUSE_PRESSED`
  This event occurs when a mouse button is pressed.
  `static final EventType<MouseEvent>`
  `MOUSE_RELEASED`
  This event occurs when a mouse button is released.

  ### Fields declared in class Event

  `consumed, eventType, NULL_SOURCE_TARGET, target`

  ### Fields declared in class EventObject

  `source`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MouseEvent(Object source, EventTarget target, EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean backButtonDown, boolean forwardButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)`
  Constructs new MouseEvent event.
  `MouseEvent(Object source, EventTarget target, EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)`
  Constructs new MouseEvent event.
  `MouseEvent(EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean backButtonDown, boolean forwardButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)`
  Constructs new MouseEvent event with null source and target.
  `MouseEvent(EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)`
  Constructs new MouseEvent event with null source and target.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `MouseEvent`
  `copyFor(Object newSource, EventTarget newTarget)`
  Copies this event for a different source and target.
  `MouseEvent`
  `copyFor(Object newSource, EventTarget newTarget, EventType<? extends MouseEvent> eventType)`
  Creates a copy of the given event with the given fields substituted.
  `static MouseDragEvent`
  `copyForMouseDragEvent(MouseEvent e, Object source, EventTarget target, EventType<MouseDragEvent> type, Object gestureSource, PickResult pickResult)`
  Creates a copy of this mouse event of MouseDragEvent type
  `final MouseButton`
  `getButton()`
  Which, if any, of the mouse buttons is responsible for this event.
  `final int`
  `getClickCount()`
  Returns number of mouse clicks associated with this event.
  `EventType<? extends MouseEvent>`
  `getEventType()`
  Gets the event type of this event.
  `final PickResult`
  `getPickResult()`
  Returns information about the pick.
  `final double`
  `getSceneX()`
  Returns horizontal position of the event relative to the origin of the `Scene` that contains the MouseEvent's source.
  `final double`
  `getSceneY()`
  Returns vertical position of the event relative to the origin of the `Scene` that contains the MouseEvent's source.
  `final double`
  `getScreenX()`
  Returns absolute horizontal position of the event.
  `final double`
  `getScreenY()`
  Returns absolute vertical position of the event.
  `final double`
  `getX()`
  Horizontal position of the event relative to the origin of the MouseEvent's source.
  `final double`
  `getY()`
  Vertical position of the event relative to the origin of the MouseEvent's source.
  `final double`
  `getZ()`
  Depth position of the event relative to the origin of the MouseEvent's source.
  `final boolean`
  `isAltDown()`
  Whether or not the Alt modifier is down on this event.
  `final boolean`
  `isBackButtonDown()`
  Returns `true` if back button (button 4) is currently pressed.
  `final boolean`
  `isControlDown()`
  Whether or not the Control modifier is down on this event.
  `boolean`
  `isDragDetect()`
  Determines whether this event will be followed by `DRAG_DETECTED` event.
  `final boolean`
  `isForwardButtonDown()`
  Returns `true` if forward button (button 5) is currently pressed.
  `final boolean`
  `isMetaDown()`
  Whether or not the Meta modifier is down on this event.
  `final boolean`
  `isMiddleButtonDown()`
  Returns `true` if middle button (button 2) is currently pressed.
  `final boolean`
  `isPopupTrigger()`
  Returns `true` if this mouse event is the popup menu trigger event for the platform.
  `final boolean`
  `isPrimaryButtonDown()`
  Returns `true` if primary button (button 1, usually the left) is currently pressed.
  `final boolean`
  `isSecondaryButtonDown()`
  Returns `true` if secondary button (button 3, usually the right) is currently pressed.
  `final boolean`
  `isShiftDown()`
  Whether or not the Shift modifier is down on this event.
  `final boolean`
  `isShortcutDown()`
  Returns whether or not the host platform common shortcut modifier is down on this event.
  `final boolean`
  `isStillSincePress()`
  Indicates whether the mouse cursor stayed in the system-provided hysteresis area since last pressed event that occurred before this event.
  `boolean`
  `isSynthesized()`
  Indicates whether this event is synthesized from using a touch screen instead of usual mouse event source devices like mouse or track pad.
  `void`
  `setDragDetect(boolean dragDetect)`
  Augments drag detection behavior.
  `String`
  `toString()`
  Returns a string representation of this `MouseEvent` object.

  ### Methods declared in class Event

  `clone, consume, fireEvent, getTarget, isConsumed`

  ### Methods declared in class EventObject

  `getSource`

  ### Methods declared in class Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### ANY

    public static final EventType<MouseEvent> ANY
    Common supertype for all mouse event types.

  - ### MOUSE_PRESSED

    public static final EventType<MouseEvent> MOUSE_PRESSED
    This event occurs when a mouse button is pressed. This activates a press-drag-release gesture, so all subsequent mouse events until the button is released are delivered to the same node.

  - ### MOUSE_RELEASED

    public static final EventType<MouseEvent> MOUSE_RELEASED
    This event occurs when a mouse button is released. It is delivered to the same node where the button has been pressed which activated a press-drag-release gesture.

  - ### MOUSE_CLICKED

    public static final EventType<MouseEvent> MOUSE_CLICKED
    This event occurs when a mouse button has been clicked (pressed and released on the same node). This event provides a button-like behavior to any node. Note that even long drags can generate click event (it is delivered to the top-most node on which the mouse was both pressed and released).

  - ### MOUSE_ENTERED_TARGET

    public static final EventType<MouseEvent> MOUSE_ENTERED_TARGET
    This event occurs when the mouse enters a node. It's the bubbling variant, which is delivered also to all parents of the entered node (unless it was consumed). When notifications about mouse entering some of node's children are not desired, `MOUSE_ENTERED` event handler should be used.
    See Also:
      - MouseEvent for more information about mouse entered/exited handling

  - ### MOUSE_ENTERED

    public static final EventType<MouseEvent> MOUSE_ENTERED
    This event occurs when the mouse enters a node. This event type is delivered only to the entered node, if parents want to filter it or get the bubbling event, they need to use `MOUSE_ENTERED_TARGET`.
    See Also:
      - MouseEvent for more information about mouse entered/exited handling

  - ### MOUSE_EXITED_TARGET

    public static final EventType<MouseEvent> MOUSE_EXITED_TARGET
    This event occurs when the mouse exits a node. It's the bubbling variant, which is delivered also to all parents of the exited node (unless it was consumed). When notifications about mouse exiting some of node's children are not desired, `MOUSE_EXITED` event handler should be used.
    See Also:
      - MouseEvent for more information about mouse entered/exited handling

  - ### MOUSE_EXITED

    public static final EventType<MouseEvent> MOUSE_EXITED
    This event occurs when the mouse exits a node. This event type is delivered only to the exited node, if parents want to filter it or get the bubbling event, they need to use `MOUSE_EXITED_TARGET`.
    See Also:
      - MouseEvent for more information about mouse entered/exited handling

  - ### MOUSE_MOVED

    public static final EventType<MouseEvent> MOUSE_MOVED
    This event occurs when the mouse moves within a node and no buttons are pressed. If any mouse button is pressed, MOUSE_DRAGGED event occurs instead.

  - ### MOUSE_DRAGGED

    public static final EventType<MouseEvent> MOUSE_DRAGGED
    This event occurs when the mouse moves with a pressed button. It is delivered to the same node where the button has been pressed which activated a press-drag-release gesture. It is delivered regardless of the mouse being within bounds of the node.

  - ### DRAG_DETECTED

    public static final EventType<MouseEvent> DRAG_DETECTED
    This event is delivered to a node that is identified as a source of a dragging gesture. Handler of this event is the only place where full press-drag-release gesture or a drag and drop gesture can be started (by calling `startFullDrag()` of `startDragAndDrop()` method). If none of them is called, simple press-drag-release gesture will continue.

    Note that his event is generated based on dragging the mouse over a platform-specific distance threshold. You can modify this behavior by calling `setDragDetect` method on any MOUSE_PRESSED or MOUSE_DRAGGED event.

    See Also:
      - MouseEvent for more details about simple press-drag-release gestures
      - MouseDragEvent for more details about full press-drag-release gestures
      - DragEvent for more details about drag and drop gestures

- ## Constructor Details

  - ### MouseEvent

    public MouseEvent(EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)
    Constructs new MouseEvent event with null source and target. Both `isBackButtonDown()` and `isForwardButtonDown()` will return false for this event.
    Parameters:
      `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.
      `button` - the mouse button used
      `clickCount` - number of click counts
      `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.
      `primaryButtonDown` - true if primary button was pressed.
      `middleButtonDown` - true if middle button was pressed.
      `secondaryButtonDown` - true if secondary button was pressed.
      `synthesized` - if this event was synthesized
      `popupTrigger` - whether this event denotes a popup trigger for current platform
      `stillSincePress` - see `isStillSincePress()`
      `pickResult` - pick result. Can be null, in this case a 2D pick result without any further values is constructed based on the scene coordinates
    Since:
      JavaFX 8.0

  - ### MouseEvent

    public MouseEvent(EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean backButtonDown, boolean forwardButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)
    Constructs new MouseEvent event with null source and target.
    Parameters:
      `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.
      `button` - the mouse button used
      `clickCount` - number of click counts
      `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.
      `primaryButtonDown` - true if primary button was pressed.
      `middleButtonDown` - true if middle button was pressed.
      `secondaryButtonDown` - true if secondary button was pressed.
      `backButtonDown` - true if back button was pressed.
      `forwardButtonDown` - true if forward button was pressed
      `synthesized` - if this event was synthesized
      `popupTrigger` - whether this event denotes a popup trigger for current platform
      `stillSincePress` - see `isStillSincePress()`
      `pickResult` - pick result. Can be null, in this case a 2D pick result without any further values is constructed based on the scene coordinates
    Since:
      12

  - ### MouseEvent

    public MouseEvent(Object source, EventTarget target, EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)
    Constructs new MouseEvent event. Both `isBackButtonDown()` and `isForwardButtonDown()` will return false for this event.
    Parameters:
      `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 source. Should be in scene coordinates if source == null or source is not a Node.
      `y` - The y with respect to the source. Should be in scene coordinates if source == null or source is not a Node.
      `screenX` - The x coordinate relative to screen.
      `screenY` - The y coordinate relative to screen.
      `button` - the mouse button used
      `clickCount` - number of click counts
      `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.
      `primaryButtonDown` - true if primary button was pressed.
      `middleButtonDown` - true if middle button was pressed.
      `secondaryButtonDown` - true if secondary button was pressed.
      `synthesized` - if this event was synthesized
      `popupTrigger` - whether this event denotes a popup trigger for current platform
      `stillSincePress` - see `isStillSincePress()`
      `pickResult` - pick result. Can be null, in this case a 2D pick result without any further values is constructed based on the scene coordinates and target
    Since:
      JavaFX 8.0

  - ### MouseEvent

    public MouseEvent(Object source, EventTarget target, EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean backButtonDown, boolean forwardButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)
    Constructs new MouseEvent event.
    Parameters:
      `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 source. Should be in scene coordinates if source == null or source is not a Node.
      `y` - The y with respect to the source. Should be in scene coordinates if source == null or source is not a Node.
      `screenX` - The x coordinate relative to screen.
      `screenY` - The y coordinate relative to screen.
      `button` - the mouse button used
      `clickCount` - number of click counts
      `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.
      `primaryButtonDown` - true if primary button was pressed.
      `middleButtonDown` - true if middle button was pressed.
      `secondaryButtonDown` - true if secondary button was pressed.
      `backButtonDown` - true if the back button was pressed
      `forwardButtonDown` - true if the forward button was pressed
      `synthesized` - if this event was synthesized
      `popupTrigger` - whether this event denotes a popup trigger for current platform
      `stillSincePress` - see `isStillSincePress()`
      `pickResult` - pick result. Can be null, in this case a 2D pick result without any further values is constructed based on the scene coordinates and target
    Since:
      12

- ## Method Details

  - ### getEventType

    public EventType<? extends MouseEvent> getEventType()
    Description copied from class: `Event`
    Gets the event type of this event. Objects of the same `Event` class can have different event types. These event types further specify what kind of event occurred.
    Overrides:
      `getEventType` in class `Event`
    Returns:
      the event type

  - ### copyFor

    public MouseEvent copyFor(Object newSource, EventTarget newTarget)
    Copies this event for a different source and target. In most cases you don't need to use this method, it's called automatically when you fire the event.
    Overrides:
      `copyFor` in class `Event`
    Parameters:
      `newSource` - New event source
      `newTarget` - New event target
    Returns:
      copy of this event for a different source and target

  - ### copyFor

    public MouseEvent copyFor(Object newSource, EventTarget newTarget, EventType<? extends MouseEvent> eventType)
    Creates a copy of the given event with the given fields substituted.
    Parameters:
      `newSource` - the new source of the copied event
      `newTarget` - the new target of the copied event
      `eventType` - the new eventType
    Returns:
      the event copy with the fields substituted
    Since:
      JavaFX 8.0

  - ### copyForMouseDragEvent

    public static MouseDragEvent copyForMouseDragEvent(MouseEvent e, Object source, EventTarget target, EventType<MouseDragEvent> type, Object gestureSource, PickResult pickResult)
    Creates a copy of this mouse event of MouseDragEvent type
    Parameters:
      `e` - the mouse event to copy
      `source` - the new source of the copied event
      `target` - the new target of the copied event
      `type` - the new MouseDragEvent type
      `gestureSource` - the new source of the gesture
      `pickResult` - pick result. Can be null, in this case a 2D pick result without any further values is constructed based on the scene coordinates
    Returns:
      new MouseDragEvent that was created from MouseEvent
    Since:
      JavaFX 8.0

  - ### isDragDetect

    public boolean isDragDetect()
    Determines whether this event will be followed by `DRAG_DETECTED` event. It has effect only with `MOUSE_PRESSED` and `MOUSE_DRAGGED` events.
    Returns:
      true if the `DRAG_DETECTED` event will follow

  - ### setDragDetect

    public void setDragDetect(boolean dragDetect)
    Augments drag detection behavior. The value says whether this event will be followed by `DRAG_DETECTED` event. It has effect only with `MOUSE_PRESSED` and `MOUSE_DRAGGED` events.
    Parameters:
      `dragDetect` - Whether `DRAG_DETECTED` event will follow

  - ### getX

    public final double getX()
    Horizontal position of the event relative to the origin of the MouseEvent's source.
    Returns:
      horizontal position of the event relative to the origin of the MouseEvent's source.

  - ### getY

    public final double getY()
    Vertical position of the event relative to the origin of the MouseEvent's source.
    Returns:
      vertical position of the event relative to the origin of the MouseEvent's source.

  - ### getZ

    public final double getZ()
    Depth position of the event relative to the origin of the MouseEvent's source.
    Returns:
      depth position of the event relative to the origin of the MouseEvent's source.
    Since:
      JavaFX 8.0

  - ### getScreenX

    public final double getScreenX()
    Returns absolute horizontal position of the event.
    Returns:
      absolute horizontal position of the event

  - ### getScreenY

    public final double getScreenY()
    Returns absolute vertical position of the event.
    Returns:
      absolute vertical position of the event

  - ### getSceneX

    public final double getSceneX()
    Returns horizontal position of the event relative to the origin of the `Scene` that contains the MouseEvent's source. If the node is not in a `Scene`, then the value is relative to the boundsInParent of the root-most parent of the MouseEvent's node. Note that in 3D scene, this represents the flat coordinates after applying the projection transformations.
    Returns:
      horizontal position of the event relative to the origin of the `Scene` that contains the MouseEvent's source

  - ### getSceneY

    public final double getSceneY()
    Returns vertical position of the event relative to the origin of the `Scene` that contains the MouseEvent's source. If the node is not in a `Scene`, then the value is relative to the boundsInParent of the root-most parent of the MouseEvent's node. Note that in 3D scene, this represents the flat coordinates after applying the projection transformations.
    Returns:
      vertical position of the event relative to the origin of the `Scene` that contains the MouseEvent's source

  - ### getButton

    public final MouseButton getButton()
    Which, if any, of the mouse buttons is responsible for this event.
    Returns:
      mouse button whose state change caused this event

  - ### getClickCount

    public final int getClickCount()
    Returns number of mouse clicks associated with this event. All MOUSE_MOVED events have the clickCount value equal to 0. The value is increased with MOUSE_PRESSED event and stays like that for all subsequent events till MOUSE_RELEASED, including the afterwards generated MOUSE_CLICKED event. The value is increased to numbers higher than one if all the events between two subsequent presses happen on a small region and in a small time (according to native operating system configuration).
    Returns:
      number of mouse clicks associated with this event

  - ### isStillSincePress

    public final boolean isStillSincePress()
    Indicates whether the mouse cursor stayed in the system-provided hysteresis area since last pressed event that occurred before this event.

    Click event is generated for a node if mouse was both pressed and released over the node, regardless of mouse movements between the press and release. If a node wants to react differently on a simple click and on a mouse drag, it should use a system-supplied short distance threshold to decide between click and drag (users often perform inadvertent tiny movements during a click). It can be easily achieved by ignoring all drags with this method returning `true` and ignoring all clicks with this method returning `false`.

    Returns:
      true if there were no significant mouse movements (out of system hysteresis area) since the last pressed event that occurred before this event.

  - ### isShiftDown

    public final boolean isShiftDown()
    Whether or not the Shift modifier is down on this event.
    Returns:
      true if the Shift modifier is down on this event

  - ### isControlDown

    public final boolean isControlDown()
    Whether or not the Control modifier is down on this event.
    Returns:
      true if the Control modifier is down on this event

  - ### isAltDown

    public final boolean isAltDown()
    Whether or not the Alt modifier is down on this event.
    Returns:
      true if the Alt modifier is down on this event

  - ### isMetaDown

    public final boolean isMetaDown()
    Whether or not the Meta modifier is down on this event.
    Returns:
      true if the Meta modifier is down on this event

  - ### isSynthesized

    public boolean isSynthesized()
    Indicates whether this event is synthesized from using a touch screen instead of usual mouse event source devices like mouse or track pad. When a finger is dragged over a touch screen, both scrolling gesture and mouse dragging are produced. If it causes a conflict in an application, this flag can be used to tell apart the usual mouse dragging from the touch screen dragging already handled as scroll events.
    Returns:
      true if this event is synthesized from using a touch screen
    Since:
      JavaFX 2.2

  - ### isShortcutDown

    public final boolean isShortcutDown()
    Returns whether or not the host platform common shortcut modifier is down on this event. This common shortcut modifier is a modifier key which is used commonly in shortcuts on the host platform. It is for example `control` on Windows and `meta` (command key) on Mac.
    Returns:
      `true` if the shortcut modifier is down, `false` otherwise

  - ### isPopupTrigger

    public final boolean isPopupTrigger()
    Returns `true` if this mouse event is the popup menu trigger event for the platform.

    Note: Popup menus are triggered differently on different systems. Therefore, `popupTrigger` should be checked in both `onMousePressed` and `mouseReleased` for proper cross-platform functionality.

    Returns:
      `true` if this mouse event is the popup menu trigger event for the platform
    Since:
      JavaFX 8.0

  - ### isPrimaryButtonDown

    public final boolean isPrimaryButtonDown()
    Returns `true` if primary button (button 1, usually the left) is currently pressed. Note that this is different from the `getButton()` method that indicates which button press was responsible for this event while this method indicates whether the primary button is depressed.
    Returns:
      `true` if primary button (button 1, usually the left) is currently pressed

  - ### isSecondaryButtonDown

    public final boolean isSecondaryButtonDown()
    Returns `true` if secondary button (button 3, usually the right) is currently pressed. Note that this is different from the `getButton()` method that indicates which button press was responsible for this event while this method indicates whether the secondary button is depressed.
    Returns:
      `true` if secondary button (button 3, usually the right) is currently pressed

  - ### isMiddleButtonDown

    public final boolean isMiddleButtonDown()
    Returns `true` if middle button (button 2) is currently pressed. Note that this is different from the `getButton()` method that indicates which button press was responsible for this event while this method indicates whether the middle button is depressed.
    Returns:
      `true` if middle button (button 2) is currently pressed

  - ### isBackButtonDown

    public final boolean isBackButtonDown()
    Returns `true` if back button (button 4) is currently pressed. Note that this is different from the `getButton()` method that indicates which button press was responsible for this event while this method indicates whether the back button is depressed.
    Returns:
      `true` if back button (button 4) is currently pressed
    Since:
      12

  - ### isForwardButtonDown

    public final boolean isForwardButtonDown()
    Returns `true` if forward button (button 5) is currently pressed. Note that this is different from the `getButton()` method that indicates which button press was responsible for this event while this method indicates whether the back button is depressed.
    Returns:
      `true` if forward button (button 5) is currently pressed
    Since:
      12

  - ### toString

    public String toString()
    Returns a string representation of this `MouseEvent` object.
    Overrides:
      `toString` in class `EventObject`
    Returns:
      a string representation of this `MouseEvent` object.

  - ### getPickResult

    public final PickResult getPickResult()
    Returns information about the pick.
    Returns:
      new PickResult object that contains information about the pick
    Since:
      JavaFX 8.0