java.awt

## Class Cursor

- java.lang.Object
- - java.awt.Cursor

- All Implemented Interfaces:
    Serializable

      public class Cursor
      extends Object
      implements Serializable

  A class to encapsulate the bitmap representation of the mouse cursor.
  See Also:
    `Component.setCursor(java.awt.Cursor)`, Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static int` | `CROSSHAIR_CURSOR` | The crosshair cursor type.
    `static int` | `CUSTOM_CURSOR` | The type associated with all custom cursors.
    `static int` | `DEFAULT_CURSOR` | The default cursor type (gets set if no cursor is defined).
    `static int` | `E_RESIZE_CURSOR` | The east-resize cursor type.
    `static int` | `HAND_CURSOR` | The hand cursor type.
    `static int` | `MOVE_CURSOR` | The move cursor type.
    `static int` | `N_RESIZE_CURSOR` | The north-resize cursor type.
    `protected String` | `name` | The user-visible name of the cursor.
    `static int` | `NE_RESIZE_CURSOR` | The north-east-resize cursor type.
    `static int` | `NW_RESIZE_CURSOR` | The north-west-resize cursor type.
    `protected static Cursor[]` | `predefined` | Deprecated. As of JDK version 1.7, the `getPredefinedCursor(int)` method should be used instead.
    `static int` | `S_RESIZE_CURSOR` | The south-resize cursor type.
    `static int` | `SE_RESIZE_CURSOR` | The south-east-resize cursor type.
    `static int` | `SW_RESIZE_CURSOR` | The south-west-resize cursor type.
    `static int` | `TEXT_CURSOR` | The text cursor type.
    `static int` | `W_RESIZE_CURSOR` | The west-resize cursor type.
    `static int` | `WAIT_CURSOR` | The wait cursor type.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `` | `Cursor(int type)` | Creates a new cursor object with the specified type.
    `protected` | `Cursor(String name)` | Creates a new custom cursor object with the specified name.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static Cursor` | `getDefaultCursor()` | Return the system default cursor.
    `String` | `getName()` | Returns the name of this cursor.
    `static Cursor` | `getPredefinedCursor(int type)` | Returns a cursor object with the specified predefined type.
    `static Cursor` | `getSystemCustomCursor(String name)` | Returns a system-specific custom cursor object matching the specified name.
    `int` | `getType()` | Returns the type for this cursor.
    `String` | `toString()` | Returns a string representation of this cursor.

    - ### Methods inherited from class java.lang.Object

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

- - ### Field Detail

    - #### DEFAULT_CURSOR

          public static final int DEFAULT_CURSOR

      The default cursor type (gets set if no cursor is defined).
      See Also:
        Constant Field Values

    - #### CROSSHAIR_CURSOR

          public static final int CROSSHAIR_CURSOR

      The crosshair cursor type.
      See Also:
        Constant Field Values

    - #### TEXT_CURSOR

          public static final int TEXT_CURSOR

      The text cursor type.
      See Also:
        Constant Field Values

    - #### WAIT_CURSOR

          public static final int WAIT_CURSOR

      The wait cursor type.
      See Also:
        Constant Field Values

    - #### SW_RESIZE_CURSOR

          public static final int SW_RESIZE_CURSOR

      The south-west-resize cursor type.
      See Also:
        Constant Field Values

    - #### SE_RESIZE_CURSOR

          public static final int SE_RESIZE_CURSOR

      The south-east-resize cursor type.
      See Also:
        Constant Field Values

    - #### NW_RESIZE_CURSOR

          public static final int NW_RESIZE_CURSOR

      The north-west-resize cursor type.
      See Also:
        Constant Field Values

    - #### NE_RESIZE_CURSOR

          public static final int NE_RESIZE_CURSOR

      The north-east-resize cursor type.
      See Also:
        Constant Field Values

    - #### N_RESIZE_CURSOR

          public static final int N_RESIZE_CURSOR

      The north-resize cursor type.
      See Also:
        Constant Field Values

    - #### S_RESIZE_CURSOR

          public static final int S_RESIZE_CURSOR

      The south-resize cursor type.
      See Also:
        Constant Field Values

    - #### W_RESIZE_CURSOR

          public static final int W_RESIZE_CURSOR

      The west-resize cursor type.
      See Also:
        Constant Field Values

    - #### E_RESIZE_CURSOR

          public static final int E_RESIZE_CURSOR

      The east-resize cursor type.
      See Also:
        Constant Field Values

    - #### HAND_CURSOR

          public static final int HAND_CURSOR

      The hand cursor type.
      See Also:
        Constant Field Values

    - #### MOVE_CURSOR

          public static final int MOVE_CURSOR

      The move cursor type.
      See Also:
        Constant Field Values

    - #### predefined

          @Deprecated
          protected static Cursor[] predefined

      Deprecated. As of JDK version 1.7, the `getPredefinedCursor(int)` method should be used instead.

    - #### CUSTOM_CURSOR

          public static final int CUSTOM_CURSOR

      The type associated with all custom cursors.
      See Also:
        Constant Field Values

    - #### name

          protected String name

      The user-visible name of the cursor.
      See Also:
        `getName()`

  - ### Constructor Detail

    - #### Cursor

          @ConstructorProperties(value="type")
          public Cursor(int type)

      Creates a new cursor object with the specified type.
      Parameters:
        `type` - the type of cursor
      Throws:
        `IllegalArgumentException` - if the specified cursor type is invalid

    - #### Cursor

          protected Cursor(String name)

      Creates a new custom cursor object with the specified name.

      Note: this constructor should only be used by AWT implementations as part of their support for custom cursors. Applications should use Toolkit.createCustomCursor().

      Parameters:
        `name` - the user-visible name of the cursor.
      See Also:
        `Toolkit.createCustomCursor(java.awt.Image, java.awt.Point, java.lang.String)`

  - ### Method Detail

    - #### getPredefinedCursor

          public static Cursor getPredefinedCursor(int type)

      Returns a cursor object with the specified predefined type.
      Parameters:
        `type` - the type of predefined cursor
      Returns:
        the specified predefined cursor
      Throws:
        `IllegalArgumentException` - if the specified cursor type is invalid

    - #### getSystemCustomCursor

          public static Cursor getSystemCustomCursor(String name)
                                              throws AWTException,
                                                     HeadlessException

      Returns a system-specific custom cursor object matching the specified name. Cursor names are, for example: "Invalid.16x16"
      Parameters:
        `name` - a string describing the desired system-specific custom cursor
      Returns:
        the system specific custom cursor named
      Throws:
        `HeadlessException` - if `GraphicsEnvironment.isHeadless` returns true
        `AWTException`

    - #### getDefaultCursor

          public static Cursor getDefaultCursor()

      Return the system default cursor.

    - #### getType

          public int getType()

      Returns the type for this cursor.

    - #### getName

          public String getName()

      Returns the name of this cursor.
      Returns:
        a localized description of this cursor.
      Since:
        1.2

    - #### toString

          public String toString()

      Returns a string representation of this cursor.
      Overrides:
        `toString` in class `Object`
      Returns:
        a string representation of this cursor.
      Since:
        1.2

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.