FocusManager (Java SE 23 & JDK 23)
Description: declaration: module: java.desktop, package: javax.swing, class: FocusManager
Keywords: javax.swing.FocusManager class

# Class FocusManager

java.lang.Object
java.awt.KeyboardFocusManager
java.awt.DefaultKeyboardFocusManager
javax.swing.FocusManager

All Implemented Interfaces:
  `KeyEventDispatcher`, `KeyEventPostProcessor`

Direct Known Subclasses:
  `DefaultFocusManager`

public abstract class FocusManager extends DefaultKeyboardFocusManager
This class has been obsoleted by the 1.4 focus APIs. While client code may still use this class, developers are strongly encouraged to use `java.awt.KeyboardFocusManager` and `java.awt.DefaultKeyboardFocusManager` instead.

Please see How to Use the Focus Subsystem, a section in The Java Tutorial, and the Focus Specification for more information.

Since:
  1.2
See Also:
  - Focus Specification

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `FOCUS_MANAGER_CLASS_PROPERTY`
  This field is obsolete, and its use is discouraged since its specification is incompatible with the 1.4 focus APIs.

  ### Fields declared in class java.awt.KeyboardFocusManager

  `BACKWARD_TRAVERSAL_KEYS, DOWN_CYCLE_TRAVERSAL_KEYS, FORWARD_TRAVERSAL_KEYS, UP_CYCLE_TRAVERSAL_KEYS`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `FocusManager()`
  Constructor for subclasses to call.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static void`
  `disableSwingFocusManager()`
  Deprecated.
  as of 1.4, replaced by `KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy)`
  `static FocusManager`
  `getCurrentManager()`
  Returns the current `KeyboardFocusManager` instance for the calling thread's context.
  `static boolean`
  `isFocusManagerEnabled()`
  Deprecated.
  As of 1.4, replaced by `KeyboardFocusManager.getDefaultFocusTraversalPolicy()`
  `static void`
  `setCurrentManager(FocusManager aFocusManager)`
  Sets the current `KeyboardFocusManager` instance for the calling thread's context.

  ### Methods declared in class java.awt.DefaultKeyboardFocusManager

  `dequeueKeyEvents, discardKeyEvents, dispatchEvent, dispatchKeyEvent, downFocusCycle, enqueueKeyEvents, focusNextComponent, focusPreviousComponent, postProcessKeyEvent, processKeyEvent, upFocusCycle`

  ### Methods declared in class java.awt.KeyboardFocusManager

  `addKeyEventDispatcher, addKeyEventPostProcessor, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, clearFocusOwner, clearGlobalFocusOwner, downFocusCycle, firePropertyChange, fireVetoableChange, focusNextComponent, focusPreviousComponent, getActiveWindow, getCurrentFocusCycleRoot, getCurrentKeyboardFocusManager, getDefaultFocusTraversalKeys, getDefaultFocusTraversalPolicy, getFocusedWindow, getFocusOwner, getGlobalActiveWindow, getGlobalCurrentFocusCycleRoot, getGlobalFocusedWindow, getGlobalFocusOwner, getGlobalPermanentFocusOwner, getKeyEventDispatchers, getKeyEventPostProcessors, getPermanentFocusOwner, getPropertyChangeListeners, getPropertyChangeListeners, getVetoableChangeListeners, getVetoableChangeListeners, redispatchEvent, removeKeyEventDispatcher, removeKeyEventPostProcessor, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener, setCurrentKeyboardFocusManager, setDefaultFocusTraversalKeys, setDefaultFocusTraversalPolicy, setGlobalActiveWindow, setGlobalCurrentFocusCycleRoot, setGlobalFocusedWindow, setGlobalFocusOwner, setGlobalPermanentFocusOwner, upFocusCycle`

  ### Methods declared in class java.lang.Object

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

- ## Field Details

  - ### FOCUS_MANAGER_CLASS_PROPERTY

    public static final String FOCUS_MANAGER_CLASS_PROPERTY
    This field is obsolete, and its use is discouraged since its specification is incompatible with the 1.4 focus APIs. The current FocusManager is no longer a property of the UI. Client code must query for the current FocusManager using `KeyboardFocusManager.getCurrentKeyboardFocusManager()`. See the Focus Specification for more information.
    See Also:
      - `KeyboardFocusManager.getCurrentKeyboardFocusManager()`
      - Focus Specification
      - Constant Field Values

- ## Constructor Details

  - ### FocusManager

    protected FocusManager()
    Constructor for subclasses to call.

- ## Method Details

  - ### getCurrentManager

    public static FocusManager getCurrentManager()
    Returns the current `KeyboardFocusManager` instance for the calling thread's context.
    Returns:
      this thread's context's `KeyboardFocusManager`
    See Also:
      - `setCurrentManager(javax.swing.FocusManager)`

  - ### setCurrentManager

    public static void setCurrentManager(FocusManager aFocusManager) throws SecurityException
    Sets the current `KeyboardFocusManager` instance for the calling thread's context. If `null` is specified, then the current `KeyboardFocusManager` is replaced with a new instance of `DefaultKeyboardFocusManager`.

    If a `SecurityManager` is installed, the calling thread must be granted the `AWTPermission` "replaceKeyboardFocusManager" in order to replace the current `KeyboardFocusManager`. If this permission is not granted, this method will throw a `SecurityException`, and the current `KeyboardFocusManager` will be unchanged.

    Parameters:
      `aFocusManager` - the new `KeyboardFocusManager` for this thread's context
    Throws:
      `SecurityException` - if the calling thread does not have permission to replace the current `KeyboardFocusManager`
    See Also:
      - `getCurrentManager()`
      - `DefaultKeyboardFocusManager`

  - ### disableSwingFocusManager

    @Deprecated public static void disableSwingFocusManager()
    Deprecated.
    as of 1.4, replaced by `KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy)`
    Changes the current `KeyboardFocusManager`'s default `FocusTraversalPolicy` to `DefaultFocusTraversalPolicy`.
    See Also:
      - `DefaultFocusTraversalPolicy`
      - `KeyboardFocusManager.setDefaultFocusTraversalPolicy(java.awt.FocusTraversalPolicy)`

  - ### isFocusManagerEnabled

    @Deprecated public static boolean isFocusManagerEnabled()
    Deprecated.
    As of 1.4, replaced by `KeyboardFocusManager.getDefaultFocusTraversalPolicy()`
    Returns whether the application has invoked `disableSwingFocusManager()`.
    Returns:
      `true` if focus manager is enabled.
    See Also:
      - `disableSwingFocusManager()`