FocusEvent (Java SE 26 & JDK 26)
Description: declaration: module: java.desktop, package: java.awt.event, class: FocusEvent
Keywords: java.awt.event.FocusEvent class

# Class FocusEvent

java.lang.Object
java.util.EventObject
java.awt.AWTEvent
java.awt.event.ComponentEvent
java.awt.event.FocusEvent

All Implemented Interfaces:
  `Serializable`

public class FocusEvent extends ComponentEvent
A low-level event which indicates that a Component has gained or lost the input focus. This low-level event is generated by a Component (such as a TextField). The event is passed to every `FocusListener` or `FocusAdapter` object which registered to receive such events using the Component's `addFocusListener` method. (`FocusAdapter` objects implement the `FocusListener` interface.) Each such listener object gets this `FocusEvent` when the event occurs.

There are two levels of focus events: permanent and temporary. Permanent focus change events occur when focus is directly moved from one Component to another, such as through a call to requestFocus() or as the user uses the TAB key to traverse Components. Temporary focus change events occur when focus is temporarily lost for a Component as the indirect result of another operation, such as Window deactivation or a Scrollbar drag. In this case, the original focus state will automatically be restored once that operation is finished, or, for the case of Window deactivation, when the Window is reactivated. Both permanent and temporary focus events are delivered using the FOCUS_GAINED and FOCUS_LOST event ids; the level may be distinguished in the event using the isTemporary() method.

Every `FocusEvent` records its cause - the reason why this event was generated. The cause is assigned during the focus event creation and may be retrieved by calling `getCause()`.

An unspecified behavior will be caused if the `id` parameter of any particular `FocusEvent` instance is not in the range from `FOCUS_FIRST` to `FOCUS_LAST`.

Since:
  1.1
See Also:
  - `FocusAdapter`
  - `FocusListener`
  - Tutorial: Writing a Focus Listener
  - Serialized Form

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `FocusEvent.Cause`
  This enum represents the cause of a `FocusEvent`- the reason why it occurred.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `FOCUS_FIRST`
  The first number in the range of ids used for focus events.
  `static final int`
  `FOCUS_GAINED`
  This event indicates that the Component is now the focus owner.
  `static final int`
  `FOCUS_LAST`
  The last number in the range of ids used for focus events.
  `static final int`
  `FOCUS_LOST`
  This event indicates that the Component is no longer the focus owner.

  ### Fields declared in class ComponentEvent

  `COMPONENT_FIRST, COMPONENT_HIDDEN, COMPONENT_LAST, COMPONENT_MOVED, COMPONENT_RESIZED, COMPONENT_SHOWN`
  Modifier and Type
  Field
  Description
  `static final int`
  `COMPONENT_FIRST`
  The first number in the range of ids used for component events.
  `static final int`
  `COMPONENT_HIDDEN`
  This event indicates that the component was rendered invisible.
  `static final int`
  `COMPONENT_LAST`
  The last number in the range of ids used for component events.
  `static final int`
  `COMPONENT_MOVED`
  This event indicates that the component's position changed.
  `static final int`
  `COMPONENT_RESIZED`
  This event indicates that the component's size changed.
  `static final int`
  `COMPONENT_SHOWN`
  This event indicates that the component was made visible.

  ### Fields declared in class AWTEvent

  `ACTION_EVENT_MASK, ADJUSTMENT_EVENT_MASK, COMPONENT_EVENT_MASK, consumed, CONTAINER_EVENT_MASK, FOCUS_EVENT_MASK, HIERARCHY_BOUNDS_EVENT_MASK, HIERARCHY_EVENT_MASK, id, INPUT_METHOD_EVENT_MASK, INVOCATION_EVENT_MASK, ITEM_EVENT_MASK, KEY_EVENT_MASK, MOUSE_EVENT_MASK, MOUSE_MOTION_EVENT_MASK, MOUSE_WHEEL_EVENT_MASK, PAINT_EVENT_MASK, RESERVED_ID_MAX, TEXT_EVENT_MASK, WINDOW_EVENT_MASK, WINDOW_FOCUS_EVENT_MASK, WINDOW_STATE_EVENT_MASK`
  Modifier and Type
  Field
  Description
  `static final long`
  `ACTION_EVENT_MASK`
  The event mask for selecting action events.
  `static final long`
  `ADJUSTMENT_EVENT_MASK`
  The event mask for selecting adjustment events.
  `static final long`
  `COMPONENT_EVENT_MASK`
  The event mask for selecting component events.
  `protected boolean`
  `consumed`
  Controls whether or not the event is sent back down to the peer once the source has processed it - false means it's sent to the peer; true means it's not.
  `static final long`
  `CONTAINER_EVENT_MASK`
  The event mask for selecting container events.
  `static final long`
  `FOCUS_EVENT_MASK`
  The event mask for selecting focus events.
  `static final long`
  `HIERARCHY_BOUNDS_EVENT_MASK`
  The event mask for selecting hierarchy bounds events.
  `static final long`
  `HIERARCHY_EVENT_MASK`
  The event mask for selecting hierarchy events.
  `protected int`
  `id`
  The event's id.
  `static final long`
  `INPUT_METHOD_EVENT_MASK`
  The event mask for selecting input method events.
  `static final long`
  `INVOCATION_EVENT_MASK`
  The event mask for selecting invocation events.
  `static final long`
  `ITEM_EVENT_MASK`
  The event mask for selecting item events.
  `static final long`
  `KEY_EVENT_MASK`
  The event mask for selecting key events.
  `static final long`
  `MOUSE_EVENT_MASK`
  The event mask for selecting mouse events.
  `static final long`
  `MOUSE_MOTION_EVENT_MASK`
  The event mask for selecting mouse motion events.
  `static final long`
  `MOUSE_WHEEL_EVENT_MASK`
  The event mask for selecting mouse wheel events.
  `static final long`
  `PAINT_EVENT_MASK`
  The event mask for selecting paint events.
  `static final int`
  `RESERVED_ID_MAX`
  The maximum value for reserved AWT event IDs.
  `static final long`
  `TEXT_EVENT_MASK`
  The event mask for selecting text events.
  `static final long`
  `WINDOW_EVENT_MASK`
  The event mask for selecting window events.
  `static final long`
  `WINDOW_FOCUS_EVENT_MASK`
  The event mask for selecting window focus events.
  `static final long`
  `WINDOW_STATE_EVENT_MASK`
  The event mask for selecting window state events.

  ### Fields declared in class EventObject

  `source`
  Modifier and Type
  Field
  Description
  `protected Object`
  `source`
  The object on which the Event initially occurred.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FocusEvent(Component source, int id)`
  Constructs a `FocusEvent` object and identifies it as a permanent change in focus.
  `FocusEvent(Component source, int id, boolean temporary)`
  Constructs a `FocusEvent` object and identifies whether or not the change is temporary.
  `FocusEvent(Component source, int id, boolean temporary, Component opposite)`
  Constructs a `FocusEvent` object with the specified temporary state, opposite `Component` and the `Cause.UNKNOWN` cause.
  `FocusEvent(Component source, int id, boolean temporary, Component opposite, FocusEvent.Cause cause)`
  Constructs a `FocusEvent` object with the specified temporary state, opposite `Component` and the cause.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final FocusEvent.Cause`
  `getCause()`
  Returns the event cause.
  `Component`
  `getOppositeComponent()`
  Returns the other Component involved in this focus change.
  `boolean`
  `isTemporary()`
  Identifies the focus change event as temporary or permanent.
  `String`
  `paramString()`
  Returns a parameter string identifying this event.

  ### Methods declared in class ComponentEvent

  `getComponent`
  Modifier and Type
  Method
  Description
  `Component`
  `getComponent()`
  Returns the originator of the event.

  ### Methods declared in class AWTEvent

  `consume, getID, isConsumed, setSource, toString`
  Modifier and Type
  Method
  Description
  `protected void`
  `consume()`
  Consumes this event, if this event can be consumed.
  `int`
  `getID()`
  Returns the event type.
  `protected boolean`
  `isConsumed()`
  Returns whether this event has been consumed.
  `void`
  `setSource(Object newSource)`
  Retargets an event to a new source.
  `String`
  `toString()`
  Returns a String representation of this object.

  ### Methods declared in class EventObject

  `getSource`
  Modifier and Type
  Method
  Description
  `Object`
  `getSource()`
  The object on which the Event initially occurred.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Field Details

  - ### FOCUS_FIRST

    public static final int FOCUS_FIRST
    The first number in the range of ids used for focus events.
    See Also:
      - Constant Field Values

  - ### FOCUS_LAST

    public static final int FOCUS_LAST
    The last number in the range of ids used for focus events.
    See Also:
      - Constant Field Values

  - ### FOCUS_GAINED

    public static final int FOCUS_GAINED
    This event indicates that the Component is now the focus owner.
    See Also:
      - Constant Field Values

  - ### FOCUS_LOST

    public static final int FOCUS_LOST
    This event indicates that the Component is no longer the focus owner.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### FocusEvent

    public FocusEvent(Component source, int id, boolean temporary, Component opposite)
    Constructs a `FocusEvent` object with the specified temporary state, opposite `Component` and the `Cause.UNKNOWN` cause. The opposite `Component` is the other `Component` involved in this focus change. For a `FOCUS_GAINED` event, this is the `Component` that lost focus. For a `FOCUS_LOST` event, this is the `Component` that gained focus. If this focus change occurs with a native application, with a Java application in a different VM, or with no other `Component`, then the opposite `Component` is `null`.

    This method throws an `IllegalArgumentException` if `source` is `null`.

    Parameters:
      `source` - The `Component` that originated the event
      `id` - An integer indicating the type of event. For information on allowable values, see the class description for `FocusEvent`
      `temporary` - Equals `true` if the focus change is temporary; `false` otherwise
      `opposite` - The other Component involved in the focus change, or `null`
    Throws:
      `IllegalArgumentException` - if `source` equals `null`
    Since:
      1.4
    See Also:
      - `EventObject.getSource()`
      - `AWTEvent.getID()`
      - `isTemporary()`
      - `getOppositeComponent()`
      - `FocusEvent.Cause.UNKNOWN`

  - ### FocusEvent

    public FocusEvent(Component source, int id, boolean temporary, Component opposite, FocusEvent.Cause cause)
    Constructs a `FocusEvent` object with the specified temporary state, opposite `Component` and the cause. The opposite `Component` is the other `Component` involved in this focus change. For a `FOCUS_GAINED` event, this is the `Component` that lost focus. For a `FOCUS_LOST` event, this is the `Component` that gained focus. If this focus change occurs with a native application, with a Java application in a different VM, or with no other `Component`, then the opposite `Component` is `null`.

    This method throws an `IllegalArgumentException` if `source` or `cause` is `null`.

    Parameters:
      `source` - The `Component` that originated the event
      `id` - An integer indicating the type of event. For information on allowable values, see the class description for `FocusEvent`
      `temporary` - Equals `true` if the focus change is temporary; `false` otherwise
      `opposite` - The other Component involved in the focus change, or `null`
      `cause` - The focus event cause.
    Throws:
      `IllegalArgumentException` - if `source` equals `null` or if `cause` equals `null`
    Since:
      9
    See Also:
      - `EventObject.getSource()`
      - `AWTEvent.getID()`
      - `isTemporary()`
      - `getOppositeComponent()`
      - `FocusEvent.Cause`

  - ### FocusEvent

    public FocusEvent(Component source, int id, boolean temporary)
    Constructs a `FocusEvent` object and identifies whether or not the change is temporary.

    This method throws an `IllegalArgumentException` if `source` is `null`.

    Parameters:
      `source` - The `Component` that originated the event
      `id` - An integer indicating the type of event. For information on allowable values, see the class description for `FocusEvent`
      `temporary` - Equals `true` if the focus change is temporary; `false` otherwise
    Throws:
      `IllegalArgumentException` - if `source` equals `null`
    See Also:
      - `EventObject.getSource()`
      - `AWTEvent.getID()`
      - `isTemporary()`

  - ### FocusEvent

    public FocusEvent(Component source, int id)
    Constructs a `FocusEvent` object and identifies it as a permanent change in focus.

    This method throws an `IllegalArgumentException` if `source` is `null`.

    Parameters:
      `source` - The `Component` that originated the event
      `id` - An integer indicating the type of event. For information on allowable values, see the class description for `FocusEvent`
    Throws:
      `IllegalArgumentException` - if `source` equals `null`
    See Also:
      - `EventObject.getSource()`
      - `AWTEvent.getID()`

- ## Method Details

  - ### isTemporary

    public boolean isTemporary()
    Identifies the focus change event as temporary or permanent.
    Returns:
      `true` if the focus change is temporary; `false` otherwise

  - ### getOppositeComponent

    public Component getOppositeComponent()
    Returns the other Component involved in this focus change. For a FOCUS_GAINED event, this is the Component that lost focus. For a FOCUS_LOST event, this is the Component that gained focus. If this focus change occurs with a native application, with a Java application in a different VM or context, or with no other Component, then null is returned.
    Returns:
      the other Component involved in the focus change, or null
    Since:
      1.4

  - ### paramString

    public String paramString()
    Returns a parameter string identifying this event. This method is useful for event-logging and for debugging.
    Overrides:
      `paramString` in class `ComponentEvent`
    Returns:
      a string identifying the event and its attributes

  - ### getCause

    public final FocusEvent.Cause getCause()
    Returns the event cause.
    Returns:
      one of `FocusEvent.Cause` values
    Since:
      9