Class MouseEvent

All Implemented Interfaces:
Serializable

public class MouseEvent extends InputEvent
Pointer event of type MouseEvent.PointerType.

The historical misleading class name may change in the future to PointerEvent.

http://www.w3.org/Submission/pointer-events/#pointerevent-interface

Unit of Coordinates

All pointer coordinates of this interface are represented in pixel units, see NativeSurface and NativeWindow.

Multiple-Pointer Events

In case an instance represents a multiple-pointer event, i.e. getPointerCount() is > 1, the first data element of the multiple-pointer fields represents the pointer triggering this event.
For example e.getX(0) at EVENT_MOUSE_PRESSED returns the data of the pressed pointer, etc.

Multiple-pointer event's button number is mapped to the first pointer ID triggering the event and the button mask bits in the modifiers field represent the pressed pointer IDs.

Users can query the pressed button and pointer count via InputEvent.getButtonDownCount() or use the simple query InputEvent.isAnyButtonDown().

If representing a single-pointer MouseEvent.PointerType.Mouse event, pointer-ID is 0 and a button value of 0 denotes no button activity, i.e. MouseEvent.PointerType.Mouse move.

See Also:
  • Field Details

  • Constructor Details

    • MouseEvent

      public MouseEvent(short eventType, Object source, long when, int modifiers, int x, int y, short clickCount, short button, float[] rotationXYZ, float rotationScale)
      Constructor for traditional one-pointer event.
      Parameters:
      eventType -
      source -
      when -
      modifiers -
      x - X-axis
      y - Y-axis
      clickCount - Mouse-button click-count
      button - button number, e.g. [BUTTON1..BUTTON_COUNT-1]. A button value of 0 denotes no button activity, i.e. MouseEvent.PointerType.Mouse move.
      rotationXYZ - Rotation of all axis
      rotationScale - Rotation scale
    • MouseEvent

      public MouseEvent(short eventType, Object source, long when, int modifiers, MouseEvent.PointerType[] pointerType, short[] pointerID, int[] x, int[] y, float[] pressure, float maxPressure, short button, short clickCount, float[] rotationXYZ, float rotationScale)
      Constructor for a multiple-pointer event.

      First element of multiple-pointer arrays represents the pointer which triggered the event!

      See details for multiple-pointer events.

      Parameters:
      eventType -
      source -
      when -
      modifiers -
      pointerType - PointerType for each pointer (multiple pointer)
      pointerID - Pointer ID for each pointer (multiple pointer). IDs start w/ 0 and are consecutive numbers. A pointer-ID of -1 may also denote no pointer/button activity, i.e. MouseEvent.PointerType.Mouse move.
      x - X-axis for each pointer (multiple pointer)
      y - Y-axis for each pointer (multiple pointer)
      pressure - Pressure for each pointer (multiple pointer)
      maxPressure - Maximum pointer pressure for all pointer
      button - Corresponding mouse-button
      clickCount - Mouse-button click-count
      rotationXYZ - Rotation of all axis
      rotationScale - Rotation scale
  • Method Details

    • getRotationXYZ

      public static final float[] getRotationXYZ(float rotationXorY, int mods)
      Returns the 3-axis XYZ rotation array by given rotation on Y axis or X axis (if SHIFT_MASK is given in mods).
    • getClickTimeout

      public static final short getClickTimeout()
    • createVariant

      public final MouseEvent createVariant(short newEventType)
    • getPointerCount

      public final int getPointerCount()
      See details for multiple-pointer events.
      Returns:
      the count of pointers involved in this event
    • getPointerType

      public final MouseEvent.PointerType getPointerType(int index)
      See details for multiple-pointer events.
      Returns:
      the MouseEvent.PointerType for the data at index or null if index not available.
    • getAllPointerTypes

      public final MouseEvent.PointerType[] getAllPointerTypes()
      See details for multiple-pointer events.
      Returns:
      array of all MouseEvent.PointerTypes for all pointers
    • getPointerId

      public final short getPointerId(int index)
      Return the pointer id for the given index or -1 if index not available.

      IDs start w/ 0 and are consecutive numbers.

      See details for multiple-pointer events.

    • getPointerIdx

      public final int getPointerIdx(short id)
      See details for multiple-pointer events.
      Returns:
      the pointer index for the given pointer id or -1 if id not available.
    • getAllPointerIDs

      public final short[] getAllPointerIDs()
      See details for multiple-pointer events.
      Returns:
      array of all pointer IDs for all pointers. IDs start w/ 0 and are consecutive numbers.
    • getButton

      public final short getButton()
      Returns the button number, e.g. [BUTTON1..BUTTON_COUNT-1].

      A button value of 0 denotes no button activity, i.e. MouseEvent.PointerType.Mouse move.

      See details for multiple-pointer events.

    • getClickCount

      public final short getClickCount()
    • getX

      public final int getX()
      See details for multiple-pointer events.
      Returns:
      X-Coord of the triggering pointer-index zero in pixel units.
    • getY

      public final int getY()
      See details for multiple-pointer events.
      Returns:
      Y-Coord of the triggering pointer-index zero in pixel units.
    • getX

      public final int getX(int index)
      See details for multiple-pointer events.
      Parameters:
      index - pointer-index within [0 .. getPointerCount()-1]
      Returns:
      X-Coord associated with the pointer-index in pixel units.
      See Also:
    • getY

      public final int getY(int index)
      See details for multiple-pointer events.
      Parameters:
      index - pointer-index within [0 .. getPointerCount()-1]
      Returns:
      Y-Coord associated with the pointer-index in pixel units.
      See Also:
    • getAllX

      public final int[] getAllX()
      See details for multiple-pointer events.
      Returns:
      array of all X-Coords for all pointers in pixel units.
    • getAllY

      public final int[] getAllY()
      See details for multiple-pointer events.
      Returns:
      array of all Y-Coords for all pointers in pixel units.
    • getPressure

      public final float getPressure(boolean normalized)
      Parameters:
      normalized - if true, method returns the normalized pressure, i.e. pressure / maxPressure
      Returns:
      The pressure associated with the pointer-index 0. The value of zero is return if not available.
      See Also:
    • getPressure

      public final float getPressure(int index, boolean normalized)
      See details for multiple-pointer events.
      Parameters:
      index - pointer-index within [0 .. getPointerCount()-1]
      normalized - if true, method returns the normalized pressure, i.e. pressure / maxPressure
      Returns:
      The pressure associated with the pointer-index. The value of zero is return if not available.
      See Also:
    • getAllPressures

      public final float[] getAllPressures()
      See details for multiple-pointer events.
      Returns:
      array of all raw, un-normalized pressures for all pointers
    • getMaxPressure

      public final float getMaxPressure()
      Returns the maximum pressure known for the input device generating this event.

      This value may be self calibrating on devices/OS, where no known maximum pressure is known. Hence subsequent events may return a higher value.

      Self calibrating maximum pressure is performed on:

      • Android

    • getRotation

      public final float[] getRotation()
      Returns a 3-component float array filled with the values of the rotational axis in the following order: horizontal-, vertical- and z-axis.

      A vertical rotation of > 0.0f is up and < 0.0f is down.

      A horizontal rotation of > 0.0f is left and < 0.0f is right.

      A z-axis rotation of > 0.0f is back and < 0.0f is front.

      However, on some OS this might be flipped due to the OS default behavior. The latter is true for OS X 10.7 (Lion) for example.

      On PointerClass onscreen devices, i.e. touch screens, rotation events are usually produced by a 2-finger movement, where horizontal and vertical rotation values are filled.

      On PointerClass offscreen devices, i.e. mouse, either the horizontal or the vertical rotation value is filled.

      The InputEvent.SHIFT_MASK modifier is set in case |horizontal| > |vertical| value.
      This can be utilized to implement only one 2d rotation direction, you may use InputEvent.isShiftDown() to query it.

      In case the pointer type is mouse, events are usually send in steps of one, ie. -1.0f and 1.0f. Higher values may result due to fast scrolling. Fractional values may result due to slow scrolling with high resolution devices.
      Here the button number refers to the wheel number.

      In case the pointer type is of class MouseEvent.PointerClass.Onscreen, e.g. touch screen, see getRotationScale() for semantics.

    • getRotationScale

      public final float getRotationScale()
      Returns the scale used to determine the rotation value, which semantics depends on the pointer type's MouseEvent.PointerClass.

      For MouseEvent.PointerClass.Offscreen, the scale is usually 1.0f and denominates an abstract value without association to a physical value.

      For MouseEvent.PointerClass.Onscreen, the scale varies and denominates the divisor of the distance the finger[s] have moved on the screen. Hence scale * rotation reproduces the screen distance in pixels the finger[s] have moved.

    • toString

      public final String toString()
      Overrides:
      toString in class InputEvent
    • toString

      public final StringBuilder toString(StringBuilder sb)
      Overrides:
      toString in class InputEvent
    • getEventTypeString

      public static String getEventTypeString(short type)