java.awt.event

## 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.

  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

- - ### Field Summary

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

    - ### Fields inherited from class java.awt.event.ComponentEvent

      `COMPONENT_FIRST, COMPONENT_HIDDEN, COMPONENT_LAST, COMPONENT_MOVED, COMPONENT_RESIZED, COMPONENT_SHOWN`

    - ### Fields inherited from class java.awt.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`

    - ### Fields inherited from class java.util.EventObject

      `source`

  - ### 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 and opposite `Component`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `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 inherited from class java.awt.event.ComponentEvent

      `getComponent`

    - ### Methods inherited from class java.awt.AWTEvent

      `consume, getID, isConsumed, setSource, toString`

    - ### Methods inherited from class java.util.EventObject

      `getSource`

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

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

- - ### Field Detail

    - #### 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 Detail

    - #### FocusEvent

          public FocusEvent(Component source,
                            int id,
                            boolean temporary,
                            Component opposite)

      Constructs a `FocusEvent` object with the specified temporary state and opposite `Component`. 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

          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 Detail

    - #### 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

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.