# Class Container

java.lang.Object
java.awt.Component
java.awt.Container

All Implemented Interfaces:
  `ImageObserver, MenuContainer, Serializable`

Direct Known Subclasses:
  `BasicSplitPaneDivider, CellRendererPane, DefaultTreeCellEditor.EditorContainer, JComponent, Panel, ScrollPane, Window`

public class Container extends Component
A generic Abstract Window Toolkit(AWT) container object is a component that can contain other AWT components.

Components added to a container are tracked in a list. The order of the list will define the components' front-to-back stacking order within the container. If no index is specified when adding a component to a container, it will be added to the end of the list (and hence to the bottom of the stacking order).

Note: For details on the focus subsystem, see How to Use the Focus Subsystem, a section in The Java Tutorial, and the Focus Specification for more information.

Since:
  1.0
See Also:
  - `add(java.awt.Component, int)`
  - `getComponent(int)`
  - `LayoutManager`
  - Serialized Form

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected class`
`Container.AccessibleAWTContainer`
Inner class of Container used to provide default support for accessibility.

### Nested classes/interfaces declared in class Component

`Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`
Modifier and Type
Class
Description
`protected class`
`Component.AccessibleAWTComponent`
Inner class of Component used to provide default support for accessibility.
`static enum`
`Component.BaselineResizeBehavior`
Enumeration of the common ways the baseline of a component can change as the size changes.
`protected class`
`Component.BltBufferStrategy`
Inner class for blitting offscreen surfaces to a component.
`protected class`
`Component.FlipBufferStrategy`
Inner class for flipping buffers on a component.

## Field Summary

### Fields declared in class Component

`accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`
Modifier and Type
Field
Description
`protected AccessibleContext`
`accessibleContext`
The `AccessibleContext` associated with this `Component`.
`static final float`
`BOTTOM_ALIGNMENT`
Ease-of-use constant for `getAlignmentY`.
`static final float`
`CENTER_ALIGNMENT`
Ease-of-use constant for `getAlignmentY` and `getAlignmentX`.
`static final float`
`LEFT_ALIGNMENT`
Ease-of-use constant for `getAlignmentX`.
`static final float`
`RIGHT_ALIGNMENT`
Ease-of-use constant for `getAlignmentX`.
`static final float`
`TOP_ALIGNMENT`
Ease-of-use constant for `getAlignmentY()`.

### Fields declared in interface ImageObserver

`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`
Modifier and Type
Field
Description
`static final int`
`ABORT`
This flag in the infoflags argument to imageUpdate indicates that an image which was being tracked asynchronously was aborted before production was complete.
`static final int`
`ALLBITS`
This flag in the infoflags argument to imageUpdate indicates that a static image which was previously drawn is now complete and can be drawn again in its final form.
`static final int`
`ERROR`
This flag in the infoflags argument to imageUpdate indicates that an image which was being tracked asynchronously has encountered an error.
`static final int`
`FRAMEBITS`
This flag in the infoflags argument to imageUpdate indicates that another complete frame of a multi-frame image which was previously drawn is now available to be drawn again.
`static final int`
`HEIGHT`
This flag in the infoflags argument to imageUpdate indicates that the height of the base image is now available and can be taken from the height argument to the imageUpdate callback method.
`static final int`
`PROPERTIES`
This flag in the infoflags argument to imageUpdate indicates that the properties of the image are now available.
`static final int`
`SOMEBITS`
This flag in the infoflags argument to imageUpdate indicates that more pixels needed for drawing a scaled variation of the image are available.
`static final int`
`WIDTH`
This flag in the infoflags argument to imageUpdate indicates that the width of the base image is now available and can be taken from the width argument to the imageUpdate callback method.

## Constructor Summary

Constructors
Constructor
Description
`Container()`
Constructs a new Container.

## Method Summary

Modifier and Type
Method
Description
`Component`
`add(Component comp)`
Appends the specified component to the end of this container.
`Component`
`add(Component comp, int index)`
Adds the specified component to this container at the given position.
`void`
`add(Component comp, Object constraints)`
Adds the specified component to the end of this container.
`void`
`add(Component comp, Object constraints, int index)`
Adds the specified component to this container with the specified constraints at the specified index.
`Component`
`add(String name, Component comp)`
Adds the specified component to this container.
`void`
`addContainerListener(ContainerListener l)`
Adds the specified container listener to receive container events from this container.
`protected void`
`addImpl(Component comp, Object constraints, int index)`
Adds the specified component to this container at the specified index.
`void`
`addNotify()`
Makes this Container displayable by connecting it to a native screen resource.
`void`
`addPropertyChangeListener(PropertyChangeListener listener)`
Adds a PropertyChangeListener to the listener list.
`void`
`addPropertyChangeListener(String propertyName, PropertyChangeListener listener)`
Adds a PropertyChangeListener to the listener list for a specific property.
`void`
`applyComponentOrientation(ComponentOrientation o)`
Sets the `ComponentOrientation` property of this container and all components contained within it.
`boolean`
`areFocusTraversalKeysSet(int id)`
Returns whether the Set of focus traversal keys for the given focus traversal operation has been explicitly defined for this Container.
`int`
`countComponents()`
Deprecated.
As of JDK version 1.1, replaced by getComponentCount().
`void`
`deliverEvent(Event e)`
Deprecated.
As of JDK version 1.1, replaced by `dispatchEvent(AWTEvent e)`
`void`
`doLayout()`
Causes this container to lay out its components.
`Component`
`findComponentAt(int x, int y)`
Locates the visible child component that contains the specified position.
`Component`
`findComponentAt(Point p)`
Locates the visible child component that contains the specified point.
`float`
`getAlignmentX()`
Returns the alignment along the x axis.
`float`
`getAlignmentY()`
Returns the alignment along the y axis.
`Component`
`getComponent(int n)`
Gets the nth component in this container.
`Component`
`getComponentAt(int x, int y)`
Locates the component that contains the x,y position.
`Component`
`getComponentAt(Point p)`
Gets the component that contains the specified point.
`int`
`getComponentCount()`
Gets the number of components in this panel.
`Component[]`
`getComponents()`
Gets all the components in this container.
`int`
`getComponentZOrder(Component comp)`
Returns the z-order index of the component inside the container.
`ContainerListener[]`
`getContainerListeners()`
Returns an array of all the container listeners registered on this container.
`Set<AWTKeyStroke>`
`getFocusTraversalKeys(int id)`
Returns the Set of focus traversal keys for a given traversal operation for this Container.
`FocusTraversalPolicy`
`getFocusTraversalPolicy()`
Returns the focus traversal policy that will manage keyboard traversal of this Container's children, or null if this Container is not a focus cycle root.
`Insets`
`getInsets()`
Determines the insets of this container, which indicate the size of the container's border.
`LayoutManager`
`getLayout()`
Gets the layout manager for this container.
`<T extends EventListener>
T[]`
`getListeners(Class<T> listenerType)`
Returns an array of all the objects currently registered as `FooListener`s upon this `Container`.
`Dimension`
`getMaximumSize()`
Returns the maximum size of this container.
`Dimension`
`getMinimumSize()`
Returns the minimum size of this container.
`Point`
`getMousePosition(boolean allowChildren)`
Returns the position of the mouse pointer in this `Container`'s coordinate space if the `Container` is under the mouse pointer, otherwise returns `null`.
`Dimension`
`getPreferredSize()`
Returns the preferred size of this container.
`Insets`
`insets()`
Deprecated.
As of JDK version 1.1, replaced by `getInsets()`.
`void`
`invalidate()`
Invalidates the container.
`boolean`
`isAncestorOf(Component c)`
Checks if the component is contained in the component hierarchy of this container.
`boolean`
`isFocusCycleRoot()`
Returns whether this Container is the root of a focus traversal cycle.
`boolean`
`isFocusCycleRoot(Container container)`
Returns whether the specified Container is the focus cycle root of this Container's focus traversal cycle.
`final boolean`
`isFocusTraversalPolicyProvider()`
Returns whether this container provides focus traversal policy.
`boolean`
`isFocusTraversalPolicySet()`
Returns whether the focus traversal policy has been explicitly set for this Container.
`boolean`
`isValidateRoot()`
Indicates if this container is a validate root.
`void`
`layout()`
Deprecated.
As of JDK version 1.1, replaced by `doLayout()`.
`void`
`list(PrintStream out, int indent)`
Prints a listing of this container to the specified output stream.
`void`
`list(PrintWriter out, int indent)`
Prints out a list, starting at the specified indentation, to the specified print writer.
`Component`
`locate(int x, int y)`
Deprecated.
As of JDK version 1.1, replaced by `getComponentAt(int, int)`.
`Dimension`
`minimumSize()`
Deprecated.
As of JDK version 1.1, replaced by `getMinimumSize()`.
`void`
`paint(Graphics g)`
Paints the container.
`void`
`paintComponents(Graphics g)`
Paints each of the components in this container.
`protected String`
`paramString()`
Returns a string representing the state of this `Container`.
`Dimension`
`preferredSize()`
Deprecated.
As of JDK version 1.1, replaced by `getPreferredSize()`.
`void`
`print(Graphics g)`
Prints the container.
`void`
`printComponents(Graphics g)`
Prints each of the components in this container.
`protected void`
`processContainerEvent(ContainerEvent e)`
Processes container events occurring on this container by dispatching them to any registered ContainerListener objects.
`protected void`
`processEvent(AWTEvent e)`
Processes events on this container.
`void`
`remove(int index)`
Removes the component, specified by `index`, from this container.
`void`
`remove(Component comp)`
Removes the specified component from this container.
`void`
`removeAll()`
Removes all the components from this container.
`void`
`removeContainerListener(ContainerListener l)`
Removes the specified container listener so it no longer receives container events from this container.
`void`
`removeNotify()`
Makes this Container undisplayable by removing its connection to its native screen resource.
`void`
`setComponentZOrder(Component comp, int index)`
Moves the specified component to the specified z-order index in the container.
`void`
`setFocusCycleRoot(boolean focusCycleRoot)`
Sets whether this Container is the root of a focus traversal cycle.
`void`
`setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)`
Sets the focus traversal keys for a given traversal operation for this Container.
`void`
`setFocusTraversalPolicy(FocusTraversalPolicy policy)`
Sets the focus traversal policy that will manage keyboard traversal of this Container's children, if this Container is a focus cycle root.
`final void`
`setFocusTraversalPolicyProvider(boolean provider)`
Sets whether this container will be used to provide focus traversal policy.
`void`
`setFont(Font f)`
Sets the font of this container.
`void`
`setLayout(LayoutManager mgr)`
Sets the layout manager for this container.
`void`
`transferFocusDownCycle()`
Transfers the focus down one focus traversal cycle.
`void`
`update(Graphics g)`
Updates the container.
`void`
`validate()`
Validates this container and all of its subcomponents.
`protected void`
`validateTree()`
Recursively descends the container tree and recomputes the layout for any subtrees marked as needing it (those marked as invalid).

### Methods declared in class Component

`action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setMixingCutoutShape, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`
Modifier and Type
Method
Description
`boolean`
`action(Event evt, Object what)`
Deprecated.
As of JDK version 1.1, should register this component as ActionListener on component which fires action events.
`void`
`add(PopupMenu popup)`
Adds the specified popup menu to the component.
`void`
`addComponentListener(ComponentListener l)`
Adds the specified component listener to receive component events from this component.
`void`
`addFocusListener(FocusListener l)`
Adds the specified focus listener to receive focus events from this component when this component gains input focus.
`void`
`addHierarchyBoundsListener(HierarchyBoundsListener l)`
Adds the specified hierarchy bounds listener to receive hierarchy bounds events from this component when the hierarchy to which this container belongs changes.
`void`
`addHierarchyListener(HierarchyListener l)`
Adds the specified hierarchy listener to receive hierarchy changed events from this component when the hierarchy to which this container belongs changes.
`void`
`addInputMethodListener(InputMethodListener l)`
Adds the specified input method listener to receive input method events from this component.
`void`
`addKeyListener(KeyListener l)`
Adds the specified key listener to receive key events from this component.
`void`
`addMouseListener(MouseListener l)`
Adds the specified mouse listener to receive mouse events from this component.
`void`
`addMouseMotionListener(MouseMotionListener l)`
Adds the specified mouse motion listener to receive mouse motion events from this component.
`void`
`addMouseWheelListener(MouseWheelListener l)`
Adds the specified mouse wheel listener to receive mouse wheel events from this component.
`Rectangle`
`bounds()`
Deprecated.
As of JDK version 1.1, replaced by `getBounds()`.
`int`
`checkImage(Image image, int width, int height, ImageObserver observer)`
Returns the status of the construction of a screen representation of the specified image.
`int`
`checkImage(Image image, ImageObserver observer)`
Returns the status of the construction of a screen representation of the specified image.
`protected AWTEvent`
`coalesceEvents(AWTEvent existingEvent, AWTEvent newEvent)`
Potentially coalesce an event being posted with an existing event.
`boolean`
`contains(int x, int y)`
Checks whether this component "contains" the specified point, where `x` and `y` are defined to be relative to the coordinate system of this component.
`boolean`
`contains(Point p)`
Checks whether this component "contains" the specified point, where the point's x and y coordinates are defined to be relative to the coordinate system of this component.
`Image`
`createImage(int width, int height)`
Creates an off-screen drawable image to be used for double buffering.
`Image`
`createImage(ImageProducer producer)`
Creates an image from the specified image producer.
`VolatileImage`
`createVolatileImage(int width, int height)`
Creates a volatile off-screen drawable image to be used for double buffering.
`VolatileImage`
`createVolatileImage(int width, int height, ImageCapabilities caps)`
Creates a volatile off-screen drawable image, with the given capabilities.
`void`
`disable()`
Deprecated.
As of JDK version 1.1, replaced by `setEnabled(boolean)`.
`protected final void`
`disableEvents(long eventsToDisable)`
Disables the events defined by the specified event mask parameter from being delivered to this component.
`final void`
`dispatchEvent(AWTEvent e)`
Dispatches an event to this component or one of its sub components.
`void`
`enable()`
Deprecated.
As of JDK version 1.1, replaced by `setEnabled(boolean)`.
`void`
`enable(boolean b)`
Deprecated.
As of JDK version 1.1, replaced by `setEnabled(boolean)`.
`protected final void`
`enableEvents(long eventsToEnable)`
Enables the events defined by the specified event mask parameter to be delivered to this component.
`void`
`enableInputMethods(boolean enable)`
Enables or disables input method support for this component.
`protected void`
`firePropertyChange(String propertyName, boolean oldValue, boolean newValue)`
Support for reporting bound property changes for boolean properties.
`void`
`firePropertyChange(String propertyName, byte oldValue, byte newValue)`
Reports a bound property change.
`void`
`firePropertyChange(String propertyName, char oldValue, char newValue)`
Reports a bound property change.
`void`
`firePropertyChange(String propertyName, double oldValue, double newValue)`
Reports a bound property change.
`void`
`firePropertyChange(String propertyName, float oldValue, float newValue)`
Reports a bound property change.
`protected void`
`firePropertyChange(String propertyName, int oldValue, int newValue)`
Support for reporting bound property changes for integer properties.
`void`
`firePropertyChange(String propertyName, long oldValue, long newValue)`
Reports a bound property change.
`void`
`firePropertyChange(String propertyName, short oldValue, short newValue)`
Reports a bound property change.
`protected void`
`firePropertyChange(String propertyName, Object oldValue, Object newValue)`
Support for reporting bound property changes for Object properties.
`AccessibleContext`
`getAccessibleContext()`
Gets the `AccessibleContext` associated with this `Component`.
`Color`
`getBackground()`
Gets the background color of this component.
`int`
`getBaseline(int width, int height)`
Returns the baseline.
`Component.BaselineResizeBehavior`
`getBaselineResizeBehavior()`
Returns an enum indicating how the baseline of the component changes as the size changes.
`Rectangle`
`getBounds()`
Gets the bounds of this component in the form of a `Rectangle` object.
`Rectangle`
`getBounds(Rectangle rv)`
Stores the bounds of this component into "return value" rv and return rv.
`ColorModel`
`getColorModel()`
Gets the instance of `ColorModel` used to display the component on the output device.
`ComponentListener[]`
`getComponentListeners()`
Returns an array of all the component listeners registered on this component.
`ComponentOrientation`
`getComponentOrientation()`
Retrieves the language-sensitive orientation that is to be used to order the elements or text within this component.
`Cursor`
`getCursor()`
Gets the cursor set in the component.
`DropTarget`
`getDropTarget()`
Gets the `DropTarget` associated with this `Component`.
`Container`
`getFocusCycleRootAncestor()`
Returns the Container which is the focus cycle root of this Component's focus traversal cycle.
`FocusListener[]`
`getFocusListeners()`
Returns an array of all the focus listeners registered on this component.
`boolean`
`getFocusTraversalKeysEnabled()`
Returns whether focus traversal keys are enabled for this Component.
`Font`
`getFont()`
Gets the font of this component.
`FontMetrics`
`getFontMetrics(Font font)`
Gets the font metrics for the specified font.
`Color`
`getForeground()`
Gets the foreground color of this component.
`Graphics`
`getGraphics()`
Creates a graphics context for this component.
`GraphicsConfiguration`
`getGraphicsConfiguration()`
Gets the `GraphicsConfiguration` associated with this `Component`.
`int`
`getHeight()`
Returns the current height of this component.
`HierarchyBoundsListener[]`
`getHierarchyBoundsListeners()`
Returns an array of all the hierarchy bounds listeners registered on this component.
`HierarchyListener[]`
`getHierarchyListeners()`
Returns an array of all the hierarchy listeners registered on this component.
`boolean`
`getIgnoreRepaint()`
Returns whether or not paint messages received from the operating system should be ignored.
`InputContext`
`getInputContext()`
Gets the input context used by this component for handling the communication with input methods when text is entered in this component.
`InputMethodListener[]`
`getInputMethodListeners()`
Returns an array of all the input method listeners registered on this component.
`InputMethodRequests`
`getInputMethodRequests()`
Gets the input method request handler which supports requests from input methods for this component.
`KeyListener[]`
`getKeyListeners()`
Returns an array of all the key listeners registered on this component.
`Locale`
`getLocale()`
Gets the locale of this component.
`Point`
`getLocation()`
Gets the location of this component in the form of a point specifying the component's top-left corner.
`Point`
`getLocation(Point rv)`
Stores the x,y origin of this component into "return value" rv and return rv.
`Point`
`getLocationOnScreen()`
Gets the location of this component in the form of a point specifying the component's top-left corner in the screen's coordinate space.
`MouseListener[]`
`getMouseListeners()`
Returns an array of all the mouse listeners registered on this component.
`MouseMotionListener[]`
`getMouseMotionListeners()`
Returns an array of all the mouse motion listeners registered on this component.
`Point`
`getMousePosition()`
Returns the position of the mouse pointer in this `Component`'s coordinate space if the `Component` is directly under the mouse pointer, otherwise returns `null`.
`MouseWheelListener[]`
`getMouseWheelListeners()`
Returns an array of all the mouse wheel listeners registered on this component.
`String`
`getName()`
Gets the name of the component.
`Container`
`getParent()`
Gets the parent of this component.
`PropertyChangeListener[]`
`getPropertyChangeListeners()`
Returns an array of all the property change listeners registered on this component.
`PropertyChangeListener[]`
`getPropertyChangeListeners(String propertyName)`
Returns an array of all the listeners which have been associated with the named property.
`Dimension`
`getSize()`
Returns the size of this component in the form of a `Dimension` object.
`Dimension`
`getSize(Dimension rv)`
Stores the width/height of this component into "return value" rv and return rv.
`Toolkit`
`getToolkit()`
Gets the toolkit of this component.
`final Object`
`getTreeLock()`
Gets this component's locking object (the object that owns the thread synchronization monitor) for AWT component-tree and layout operations.
`int`
`getWidth()`
Returns the current width of this component.
`int`
`getX()`
Returns the current x coordinate of the components origin.
`int`
`getY()`
Returns the current y coordinate of the components origin.
`boolean`
`gotFocus(Event evt, Object what)`
Deprecated.
As of JDK version 1.1, replaced by processFocusEvent(FocusEvent).
`boolean`
`handleEvent(Event evt)`
Deprecated.
As of JDK version 1.1 replaced by processEvent(AWTEvent).
`boolean`
`hasFocus()`
Returns `true` if this `Component` is the focus owner.
`void`
`hide()`
Deprecated.
As of JDK version 1.1, replaced by `setVisible(boolean)`.
`boolean`
`imageUpdate(Image img, int infoflags, int x, int y, int w, int h)`
Repaints the component when the image has changed.
`boolean`
`inside(int x, int y)`
Deprecated.
As of JDK version 1.1, replaced by contains(int, int).
`boolean`
`isBackgroundSet()`
Returns whether the background color has been explicitly set for this Component.
`boolean`
`isCursorSet()`
Returns whether the cursor has been explicitly set for this Component.
`boolean`
`isDisplayable()`
Determines whether this component is displayable.
`boolean`
`isDoubleBuffered()`
Returns true if this component is painted to an offscreen image ("buffer") that's copied to the screen later.
`boolean`
`isEnabled()`
Determines whether this component is enabled.
`boolean`
`isFocusable()`
Returns whether this Component can be focused.
`boolean`
`isFocusOwner()`
Returns `true` if this `Component` is the focus owner.
`boolean`
`isFocusTraversable()`
Deprecated.
As of 1.4, replaced by `isFocusable()`.
`boolean`
`isFontSet()`
Returns whether the font has been explicitly set for this Component.
`boolean`
`isForegroundSet()`
Returns whether the foreground color has been explicitly set for this Component.
`boolean`
`isLightweight()`
A lightweight component doesn't have a native toolkit peer.
`boolean`
`isMaximumSizeSet()`
Returns true if the maximum size has been set to a non-`null` value otherwise returns false.
`boolean`
`isMinimumSizeSet()`
Returns whether or not `setMinimumSize` has been invoked with a non-null value.
`boolean`
`isOpaque()`
Returns true if this component is completely opaque, returns false by default.
`boolean`
`isPreferredSizeSet()`
Returns true if the preferred size has been set to a non-`null` value otherwise returns false.
`boolean`
`isShowing()`
Determines whether this component is showing on screen.
`boolean`
`isValid()`
Determines whether this component is valid.
`boolean`
`isVisible()`
Determines whether this component should be visible when its parent is visible.
`boolean`
`keyDown(Event evt, int key)`
Deprecated.
As of JDK version 1.1, replaced by processKeyEvent(KeyEvent).
`boolean`
`keyUp(Event evt, int key)`
Deprecated.
As of JDK version 1.1, replaced by processKeyEvent(KeyEvent).
`void`
`list()`
Prints a listing of this component to the standard system output stream `System.out`.
`void`
`list(PrintStream out)`
Prints a listing of this component to the specified output stream.
`void`
`list(PrintWriter out)`
Prints a listing to the specified print writer.
`Point`
`location()`
Deprecated.
As of JDK version 1.1, replaced by `getLocation()`.
`boolean`
`lostFocus(Event evt, Object what)`
Deprecated.
As of JDK version 1.1, replaced by processFocusEvent(FocusEvent).
`boolean`
`mouseDown(Event evt, int x, int y)`
Deprecated.
As of JDK version 1.1, replaced by processMouseEvent(MouseEvent).
`boolean`
`mouseDrag(Event evt, int x, int y)`
Deprecated.
As of JDK version 1.1, replaced by processMouseMotionEvent(MouseEvent).
`boolean`
`mouseEnter(Event evt, int x, int y)`
Deprecated.
As of JDK version 1.1, replaced by processMouseEvent(MouseEvent).
`boolean`
`mouseExit(Event evt, int x, int y)`
Deprecated.
As of JDK version 1.1, replaced by processMouseEvent(MouseEvent).
`boolean`
`mouseMove(Event evt, int x, int y)`
Deprecated.
As of JDK version 1.1, replaced by processMouseMotionEvent(MouseEvent).
`boolean`
`mouseUp(Event evt, int x, int y)`
Deprecated.
As of JDK version 1.1, replaced by processMouseEvent(MouseEvent).
`void`
`move(int x, int y)`
Deprecated.
As of JDK version 1.1, replaced by `setLocation(int, int)`.
`void`
`nextFocus()`
Deprecated.
As of JDK version 1.1, replaced by transferFocus().
`void`
`paintAll(Graphics g)`
Paints this component and all of its subcomponents.
`boolean`
`postEvent(Event e)`
Deprecated.
As of JDK version 1.1, replaced by dispatchEvent(AWTEvent).
`boolean`
`prepareImage(Image image, int width, int height, ImageObserver observer)`
Prepares an image for rendering on this component at the specified width and height.
`boolean`
`prepareImage(Image image, ImageObserver observer)`
Prepares an image for rendering on this component.
`void`
`printAll(Graphics g)`
Prints this component and all of its subcomponents.
`protected void`
`processComponentEvent(ComponentEvent e)`
Processes component events occurring on this component by dispatching them to any registered `ComponentListener` objects.
`protected void`
`processFocusEvent(FocusEvent e)`
Processes focus events occurring on this component by dispatching them to any registered `FocusListener` objects.
`protected void`
`processHierarchyBoundsEvent(HierarchyEvent e)`
Processes hierarchy bounds events occurring on this component by dispatching them to any registered `HierarchyBoundsListener` objects.
`protected void`
`processHierarchyEvent(HierarchyEvent e)`
Processes hierarchy events occurring on this component by dispatching them to any registered `HierarchyListener` objects.
`protected void`
`processInputMethodEvent(InputMethodEvent e)`
Processes input method events occurring on this component by dispatching them to any registered `InputMethodListener` objects.
`protected void`
`processKeyEvent(KeyEvent e)`
Processes key events occurring on this component by dispatching them to any registered `KeyListener` objects.
`protected void`
`processMouseEvent(MouseEvent e)`
Processes mouse events occurring on this component by dispatching them to any registered `MouseListener` objects.
`protected void`
`processMouseMotionEvent(MouseEvent e)`
Processes mouse motion events occurring on this component by dispatching them to any registered `MouseMotionListener` objects.
`protected void`
`processMouseWheelEvent(MouseWheelEvent e)`
Processes mouse wheel events occurring on this component by dispatching them to any registered `MouseWheelListener` objects.
`void`
`remove(MenuComponent popup)`
Removes the specified popup menu from the component.
`void`
`removeComponentListener(ComponentListener l)`
Removes the specified component listener so that it no longer receives component events from this component.
`void`
`removeFocusListener(FocusListener l)`
Removes the specified focus listener so that it no longer receives focus events from this component.
`void`
`removeHierarchyBoundsListener(HierarchyBoundsListener l)`
Removes the specified hierarchy bounds listener so that it no longer receives hierarchy bounds events from this component.
`void`
`removeHierarchyListener(HierarchyListener l)`
Removes the specified hierarchy listener so that it no longer receives hierarchy changed events from this component.
`void`
`removeInputMethodListener(InputMethodListener l)`
Removes the specified input method listener so that it no longer receives input method events from this component.
`void`
`removeKeyListener(KeyListener l)`
Removes the specified key listener so that it no longer receives key events from this component.
`void`
`removeMouseListener(MouseListener l)`
Removes the specified mouse listener so that it no longer receives mouse events from this component.
`void`
`removeMouseMotionListener(MouseMotionListener l)`
Removes the specified mouse motion listener so that it no longer receives mouse motion events from this component.
`void`
`removeMouseWheelListener(MouseWheelListener l)`
Removes the specified mouse wheel listener so that it no longer receives mouse wheel events from this component.
`void`
`removePropertyChangeListener(PropertyChangeListener listener)`
Removes a PropertyChangeListener from the listener list.
`void`
`removePropertyChangeListener(String propertyName, PropertyChangeListener listener)`
Removes a `PropertyChangeListener` from the listener list for a specific property.
`void`
`repaint()`
Repaints this component.
`void`
`repaint(int x, int y, int width, int height)`
Repaints the specified rectangle of this component.
`void`
`repaint(long tm)`
Repaints the component.
`void`
`repaint(long tm, int x, int y, int width, int height)`
Repaints the specified rectangle of this component within `tm` milliseconds.
`void`
`requestFocus()`
Requests that this Component get the input focus, and that this Component's top-level ancestor become the focused Window.
`protected boolean`
`requestFocus(boolean temporary)`
Requests that this `Component` get the input focus, and that this `Component`'s top-level ancestor become the focused `Window`.
`protected boolean`
`requestFocus(boolean temporary, FocusEvent.Cause cause)`
Requests by the reason of `cause` that this `Component` get the input focus, and that this `Component`'s top-level ancestor become the focused `Window`.
`void`
`requestFocus(FocusEvent.Cause cause)`
Requests by the reason of `cause` that this Component get the input focus, and that this Component's top-level ancestor become the focused Window.
`boolean`
`requestFocusInWindow()`
Requests that this Component get the input focus, if this Component's top-level ancestor is already the focused Window.
`protected boolean`
`requestFocusInWindow(boolean temporary)`
Requests that this `Component` get the input focus, if this `Component`'s top-level ancestor is already the focused `Window`.
`boolean`
`requestFocusInWindow(FocusEvent.Cause cause)`
Requests by the reason of `cause` that this Component get the input focus, if this Component's top-level ancestor is already the focused Window.
`void`
`reshape(int x, int y, int width, int height)`
Deprecated.
As of JDK version 1.1, replaced by `setBounds(int, int, int, int)`.
`void`
`resize(int width, int height)`
Deprecated.
As of JDK version 1.1, replaced by `setSize(int, int)`.
`void`
`resize(Dimension d)`
Deprecated.
As of JDK version 1.1, replaced by `setSize(Dimension)`.
`void`
`revalidate()`
Revalidates the component hierarchy up to the nearest validate root.
`void`
`setBackground(Color c)`
Sets the background color of this component.
`void`
`setBounds(int x, int y, int width, int height)`
Moves and resizes this component.
`void`
`setBounds(Rectangle r)`
Moves and resizes this component to conform to the new bounding rectangle `r`.
`void`
`setComponentOrientation(ComponentOrientation o)`
Sets the language-sensitive orientation that is to be used to order the elements or text within this component.
`void`
`setCursor(Cursor cursor)`
Sets the cursor image to the specified cursor.
`void`
`setDropTarget(DropTarget dt)`
Associate a `DropTarget` with this component.
`void`
`setEnabled(boolean b)`
Enables or disables this component, depending on the value of the parameter `b`.
`void`
`setFocusable(boolean focusable)`
Sets the focusable state of this Component to the specified value.
`void`
`setFocusTraversalKeysEnabled(boolean focusTraversalKeysEnabled)`
Sets whether focus traversal keys are enabled for this Component.
`void`
`setForeground(Color c)`
Sets the foreground color of this component.
`void`
`setIgnoreRepaint(boolean ignoreRepaint)`
Sets whether or not paint messages received from the operating system should be ignored.
`void`
`setLocale(Locale l)`
Sets the locale of this component.
`void`
`setLocation(int x, int y)`
Moves this component to a new location.
`void`
`setLocation(Point p)`
Moves this component to a new location.
`void`
`setMaximumSize(Dimension maximumSize)`
Sets the maximum size of this component to a constant value.
`void`
`setMinimumSize(Dimension minimumSize)`
Sets the minimum size of this component to a constant value.
`void`
`setMixingCutoutShape(Shape shape)`
Sets a 'mixing-cutout' shape for this lightweight component.
`void`
`setName(String name)`
Sets the name of the component to the specified string.
`void`
`setPreferredSize(Dimension preferredSize)`
Sets the preferred size of this component to a constant value.
`void`
`setSize(int width, int height)`
Resizes this component so that it has width `width` and height `height`.
`void`
`setSize(Dimension d)`
Resizes this component so that it has width `d.width` and height `d.height`.
`void`
`setVisible(boolean b)`
Shows or hides this component depending on the value of parameter `b`.
`void`
`show()`
Deprecated.
As of JDK version 1.1, replaced by `setVisible(boolean)`.
`void`
`show(boolean b)`
Deprecated.
As of JDK version 1.1, replaced by `setVisible(boolean)`.
`Dimension`
`size()`
Deprecated.
As of JDK version 1.1, replaced by `getSize()`.
`String`
`toString()`
Returns a string representation of this component and its values.
`void`
`transferFocus()`
Transfers the focus to the next component, as though this Component were the focus owner.
`void`
`transferFocusBackward()`
Transfers the focus to the previous component, as though this Component were the focus owner.
`void`
`transferFocusUpCycle()`
Transfers the focus up one focus traversal cycle.

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

## Constructor Details

### Container

public Container()
Constructs a new Container. Containers can be extended directly, but are lightweight in this case and must be contained by a parent somewhere higher up in the component tree that is native. (such as Frame for example).

## Method Details

### getComponentCount

public int getComponentCount()
Gets the number of components in this panel.

Note: This method should be called under AWT tree lock.

Returns:
  the number of components in this panel.
Since:
  1.1
See Also:
  - `getComponent(int)`
  - `Component.getTreeLock()`

### countComponents

@Deprecated public int countComponents()
Deprecated.
As of JDK version 1.1, replaced by getComponentCount().
Returns the number of components in this container.

Returns:
  the number of components in this container

### getComponent

public Component getComponent(int n)
Gets the nth component in this container.

Note: This method should be called under AWT tree lock.

Parameters:
  `n` - the index of the component to get.
Returns:
  the nth component in this container.
Throws:
  `ArrayIndexOutOfBoundsException` - if the nth value does not exist.
See Also:
  - `Component.getTreeLock()`

### getComponents

public Component[] getComponents()
Gets all the components in this container.

Note: This method should be called under AWT tree lock.

Returns:
  an array of all the components in this container.
See Also:
  - `Component.getTreeLock()`

### getInsets

public Insets getInsets()
Determines the insets of this container, which indicate the size of the container's border.

A `Frame` object, for example, has a top inset that corresponds to the height of the frame's title bar.

Returns:
  the insets of this container.
Since:
  1.1
See Also:
  - `Insets`
  - `LayoutManager`

### insets

@Deprecated public Insets insets()
Deprecated.
As of JDK version 1.1, replaced by `getInsets()`.
Returns the insets for this container.

Returns:
  the insets for this container

### add

public Component add(Component comp)
Appends the specified component to the end of this container. This is a convenience method for `addImpl(Component, Object, int)`.

This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to display the added component.

Parameters:
  `comp` - the component to be added
Returns:
  the component argument
Throws:
  `NullPointerException` - if `comp` is `null`
See Also:
  - `addImpl(Component, Object, int)`
  - `invalidate()`
  - `validate()`
  - `JComponent.revalidate()`

### add

public Component add(String name, Component comp)
Adds the specified component to this container. This is a convenience method for `addImpl(Component, Object, int)`.

This method is obsolete as of 1.1. Please use the method `add(Component, Object)` instead.

This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to display the added component.

Parameters:
  `name` - the name of the component to be added
  `comp` - the component to be added
Returns:
  the component added
Throws:
  `NullPointerException` - if `comp` is `null`
See Also:
  - `add(Component, Object)`
  - `invalidate()`

### add

public Component add(Component comp, int index)
Adds the specified component to this container at the given position. This is a convenience method for `addImpl(Component, Object, int)`.

This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to display the added component.

Parameters:
  `comp` - the component to be added
  `index` - the position at which to insert the component, or `-1` to append the component to the end
Returns:
  the component `comp`
Throws:
  `NullPointerException` - if `comp` is `null`
  `IllegalArgumentException` - if `index` is invalid (see `addImpl(Component, Object, int)` for details)
See Also:
  - `addImpl(Component, Object, int)`
  - `remove(int)`
  - `invalidate()`
  - `validate()`
  - `JComponent.revalidate()`

### setComponentZOrder

public void setComponentZOrder(Component comp, int index)
Moves the specified component to the specified z-order index in the container. The z-order determines the order that components are painted; the component with the highest z-order paints first and the component with the lowest z-order paints last. Where components overlap, the component with the lower z-order paints over the component with the higher z-order.

If the component is a child of some other container, it is removed from that container before being added to this container. The important difference between this method and `java.awt.Container.add(Component, int)` is that this method doesn't call `removeNotify` on the component while removing it from its previous container unless necessary and when allowed by the underlying native windowing system. This way, if the component has the keyboard focus, it maintains the focus when moved to the new position.

This property is guaranteed to apply only to lightweight non-`Container` components.

This method changes layout-related information, and therefore, invalidates the component hierarchy.

Note: Not all platforms support changing the z-order of heavyweight components from one container into another without the call to `removeNotify`. There is no way to detect whether a platform supports this, so developers shouldn't make any assumptions.

Parameters:
  `comp` - the component to be moved
  `index` - the position in the container's list to insert the component, where `getComponentCount()` appends to the end
Throws:
  `NullPointerException` - if `comp` is `null`
  `IllegalArgumentException` - if `comp` is one of the container's parents
  `IllegalArgumentException` - if `index` is not in the range `[0, getComponentCount()]` for moving between containers, or not in the range `[0, getComponentCount()-1]` for moving inside a container
  `IllegalArgumentException` - if adding a container to itself
  `IllegalArgumentException` - if adding a `Window` to a container
Since:
  1.5
See Also:
  - `getComponentZOrder(java.awt.Component)`
  - `invalidate()`

### getComponentZOrder

public int getComponentZOrder(Component comp)
Returns the z-order index of the component inside the container. The higher a component is in the z-order hierarchy, the lower its index. The component with the lowest z-order index is painted last, above all other child components.

Parameters:
  `comp` - the component being queried
Returns:
  the z-order index of the component; otherwise returns -1 if the component is `null` or doesn't belong to the container
Since:
  1.5
See Also:
  - `setComponentZOrder(java.awt.Component, int)`

### add

public void add(Component comp, Object constraints)
Adds the specified component to the end of this container. Also notifies the layout manager to add the component to this container's layout using the specified constraints object. This is a convenience method for `addImpl(Component, Object, int)`.

This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to display the added component.

Parameters:
  `comp` - the component to be added
  `constraints` - an object expressing layout constraints for this component
Throws:
  `NullPointerException` - if `comp` is `null`
Since:
  1.1
See Also:
  - `addImpl(Component, Object, int)`
  - `invalidate()`
  - `validate()`
  - `JComponent.revalidate()`
  - `LayoutManager`

### add

public void add(Component comp, Object constraints, int index)
Adds the specified component to this container with the specified constraints at the specified index. Also notifies the layout manager to add the component to the this container's layout using the specified constraints object. This is a convenience method for `addImpl(Component, Object, int)`.

This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to display the added component.

Parameters:
  `comp` - the component to be added
  `constraints` - an object expressing layout constraints for this
  `index` - the position in the container's list at which to insert the component; `-1` means insert at the end component
Throws:
  `NullPointerException` - if `comp` is `null`
  `IllegalArgumentException` - if `index` is invalid (see `addImpl(Component, Object, int)` for details)
See Also:
  - `addImpl(Component, Object, int)`
  - `invalidate()`
  - `validate()`
  - `JComponent.revalidate()`
  - `remove(int)`
  - `LayoutManager`

### addImpl

protected void addImpl(Component comp, Object constraints, int index)
Adds the specified component to this container at the specified index. This method also notifies the layout manager to add the component to this container's layout using the specified constraints object via the `addLayoutComponent` method.

The constraints are defined by the particular layout manager being used. For example, the `BorderLayout` class defines five constraints: `BorderLayout.NORTH`, `BorderLayout.SOUTH`, `BorderLayout.EAST`, `BorderLayout.WEST`, and `BorderLayout.CENTER`.

The `GridBagLayout` class requires a `GridBagConstraints` object. Failure to pass the correct type of constraints object results in an `IllegalArgumentException`.

If the current layout manager implements `LayoutManager2`, then `LayoutManager2.addLayoutComponent(Component,Object)` is invoked on it. If the current layout manager does not implement `LayoutManager2`, and constraints is a `String`, then `LayoutManager.addLayoutComponent(String,Component)` is invoked on it.

If the component is not an ancestor of this container and has a non-null parent, it is removed from its current parent before it is added to this container.

This is the method to override if a program needs to track every add request to a container as all other add methods defer to this one. An overriding method should usually include a call to the superclass's version of the method:

> `super.addImpl(comp, constraints, index)`

This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to display the added component.

Parameters:
  `comp` - the component to be added
  `constraints` - an object expressing layout constraints for this component
  `index` - the position in the container's list at which to insert the component, where `-1` means append to the end
Throws:
  `IllegalArgumentException` - if `index` is invalid; if `comp` is a child of this container, the valid range is `[-1, getComponentCount()-1]`; if component is not a child of this container, the valid range is `[-1, getComponentCount()]`
  `IllegalArgumentException` - if `comp` is an ancestor of this container
  `IllegalArgumentException` - if adding a window to a container
  `NullPointerException` - if `comp` is `null`
Since:
  1.1
See Also:
  - `add(Component)`
  - `add(Component, int)`
  - `add(Component, java.lang.Object)`
  - `invalidate()`
  - `LayoutManager`
  - `LayoutManager2`

### remove

public void remove(int index)
Removes the component, specified by `index`, from this container. This method also notifies the layout manager to remove the component from this container's layout via the `removeLayoutComponent` method.

This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to reflect the changes.

Parameters:
  `index` - the index of the component to be removed
Throws:
  `ArrayIndexOutOfBoundsException` - if `index` is not in range `[0, getComponentCount()-1]`
Since:
  1.1
See Also:
  - `add(Component)`
  - `invalidate()`
  - `validate()`
  - `getComponentCount()`

### remove

public void remove(Component comp)
Removes the specified component from this container. This method also notifies the layout manager to remove the component from this container's layout via the `removeLayoutComponent` method.

This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to reflect the changes.

Parameters:
  `comp` - the component to be removed
Throws:
  `NullPointerException` - if `comp` is `null`
See Also:
  - `add(Component)`
  - `invalidate()`
  - `validate()`
  - `remove(int)`

### removeAll

public void removeAll()
Removes all the components from this container. This method also notifies the layout manager to remove the components from this container's layout via the `removeLayoutComponent` method.

This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to reflect the changes.

See Also:
  - `add(Component)`
  - `remove(int)`
  - `invalidate()`

### getLayout

public LayoutManager getLayout()
Gets the layout manager for this container.

Returns:
  the current layout manager for this container
See Also:
  - `doLayout()`
  - `setLayout(LayoutManager)`

### setLayout

public void setLayout(LayoutManager mgr)
Sets the layout manager for this container.

This method changes layout-related information, and therefore, invalidates the component hierarchy.

Parameters:
  `mgr` - the specified layout manager
See Also:
  - `doLayout()`
  - `getLayout()`
  - `invalidate()`

### doLayout

public void doLayout()
Causes this container to lay out its components. Most programs should not call this method directly, but should invoke the `validate` method instead.

Overrides:
  `doLayout` in class `Component`
Since:
  1.1
See Also:
  - `LayoutManager.layoutContainer(Container)`
  - `setLayout(LayoutManager)`
  - `validate()`

### layout

@Deprecated public void layout()
Deprecated.
As of JDK version 1.1, replaced by `doLayout()`.

Overrides:
  `layout` in class `Component`

### isValidateRoot

public boolean isValidateRoot()
Indicates if this container is a validate root.

Layout-related changes, such as bounds of the validate root descendants, do not affect the layout of the validate root parent. This peculiarity enables the `invalidate()` method to stop invalidating the component hierarchy when the method encounters a validate root. However, to preserve backward compatibility this new optimized behavior is enabled only when the `java.awt.smartInvalidate` system property value is set to `true`.

If a component hierarchy contains validate roots and the new optimized `invalidate()` behavior is enabled, the `validate()` method must be invoked on the validate root of a previously invalidated component to restore the validity of the hierarchy later. Otherwise, calling the `validate()` method on the top-level container (such as a `Frame` object) should be used to restore the validity of the component hierarchy.

The `Window` class is the validate root in AWT. Swing introduces more validate roots.

Returns:
  whether this container is a validate root
Since:
  1.7
See Also:
  - `invalidate()`
  - `Component.invalidate()`
  - `JComponent.isValidateRoot()`
  - `JComponent.revalidate()`

### invalidate

public void invalidate()
Invalidates the container.

If the `LayoutManager` installed on this container is an instance of the `LayoutManager2` interface, then the `LayoutManager2.invalidateLayout(Container)` method is invoked on it supplying this `Container` as the argument.

Afterwards this method marks this container invalid, and invalidates its ancestors. See the `Component.invalidate()` method for more details.

Overrides:
  `invalidate` in class `Component`
See Also:
  - `validate()`
  - `layout()`
  - `LayoutManager2`

### validate

public void validate()
Validates this container and all of its subcomponents.

Validating a container means laying out its subcomponents. Layout-related changes, such as setting the bounds of a component, or adding a component to the container, invalidate the container automatically. Note that the ancestors of the container may be invalidated also (see `Component.invalidate()` for details.) Therefore, to restore the validity of the hierarchy, the `validate()` method should be invoked on the top-most invalid container of the hierarchy.

Validating the container may be a quite time-consuming operation. For performance reasons a developer may postpone the validation of the hierarchy till a set of layout-related operations completes, e.g. after adding all the children to the container.

If this `Container` is not valid, this method invokes the `validateTree` method and marks this `Container` as valid. Otherwise, no action is performed.

Overrides:
  `validate` in class `Component`
See Also:
  - `add(java.awt.Component)`
  - `invalidate()`
  - `isValidateRoot()`
  - `JComponent.revalidate()`
  - `validateTree()`

### validateTree

protected void validateTree()
Recursively descends the container tree and recomputes the layout for any subtrees marked as needing it (those marked as invalid). Synchronization should be provided by the method that calls this one: `validate`.

See Also:
  - `doLayout()`
  - `validate()`

### setFont

public void setFont(Font f)
Sets the font of this container.

This method changes layout-related information, and therefore, invalidates the component hierarchy.

Overrides:
  `setFont` in class `Component`
Parameters:
  `f` - The font to become this container's font.
Since:
  1.0
See Also:
  - `Component.getFont()`
  - `invalidate()`

### getPreferredSize

public Dimension getPreferredSize()
Returns the preferred size of this container. If the preferred size has not been set explicitly by `Component.setPreferredSize(Dimension)` and this `Container` has a `non-null` `LayoutManager`, then `LayoutManager.preferredLayoutSize(Container)` is used to calculate the preferred size.

Note: some implementations may cache the value returned from the `LayoutManager`. Implementations that cache need not invoke `preferredLayoutSize` on the `LayoutManager` every time this method is invoked, rather the `LayoutManager` will only be queried after the `Container` becomes invalid.

Overrides:
  `getPreferredSize` in class `Component`
Returns:
  an instance of `Dimension` that represents the preferred size of this container.
See Also:
  - `getMinimumSize()`
  - `getMaximumSize()`
  - `getLayout()`
  - `LayoutManager.preferredLayoutSize(Container)`
  - `Component.getPreferredSize()`

### preferredSize

@Deprecated public Dimension preferredSize()
Deprecated.
As of JDK version 1.1, replaced by `getPreferredSize()`.
Description copied from class: `Component`
Returns the component's preferred size.

Overrides:
  `preferredSize` in class `Component`
Returns:
  the component's preferred size

### getMinimumSize

public Dimension getMinimumSize()
Returns the minimum size of this container. If the minimum size has not been set explicitly by `Component.setMinimumSize(Dimension)` and this `Container` has a `non-null` `LayoutManager`, then `LayoutManager.minimumLayoutSize(Container)` is used to calculate the minimum size.

Note: some implementations may cache the value returned from the `LayoutManager`. Implementations that cache need not invoke `minimumLayoutSize` on the `LayoutManager` every time this method is invoked, rather the `LayoutManager` will only be queried after the `Container` becomes invalid.

Overrides:
  `getMinimumSize` in class `Component`
Returns:
  an instance of `Dimension` that represents the minimum size of this container.
Since:
  1.1
See Also:
  - `getPreferredSize()`
  - `getMaximumSize()`
  - `getLayout()`
  - `LayoutManager.minimumLayoutSize(Container)`
  - `Component.getMinimumSize()`

### minimumSize

@Deprecated public Dimension minimumSize()
Deprecated.
As of JDK version 1.1, replaced by `getMinimumSize()`.
Description copied from class: `Component`
Returns the minimum size of this component.

Overrides:
  `minimumSize` in class `Component`
Returns:
  the minimum size of this component

### getMaximumSize

public Dimension getMaximumSize()
Returns the maximum size of this container. If the maximum size has not been set explicitly by `Component.setMaximumSize(Dimension)` and the `LayoutManager` installed on this `Container` is an instance of `LayoutManager2`, then `LayoutManager2.maximumLayoutSize(Container)` is used to calculate the maximum size.

Note: some implementations may cache the value returned from the `LayoutManager2`. Implementations that cache need not invoke `maximumLayoutSize` on the `LayoutManager2` every time this method is invoked, rather the `LayoutManager2` will only be queried after the `Container` becomes invalid.

Overrides:
  `getMaximumSize` in class `Component`
Returns:
  an instance of `Dimension` that represents the maximum size of this container.
See Also:
  - `getPreferredSize()`
  - `getMinimumSize()`
  - `getLayout()`
  - `LayoutManager2.maximumLayoutSize(Container)`
  - `Component.getMaximumSize()`

### getAlignmentX

public float getAlignmentX()
Returns the alignment along the x axis. This specifies how the component would like to be aligned relative to other components. The value should be a number between 0 and 1 where 0 represents alignment along the origin, 1 is aligned the furthest away from the origin, 0.5 is centered, etc.

Overrides:
  `getAlignmentX` in class `Component`
Returns:
  the horizontal alignment of this component

### getAlignmentY

public float getAlignmentY()
Returns the alignment along the y axis. This specifies how the component would like to be aligned relative to other components. The value should be a number between 0 and 1 where 0 represents alignment along the origin, 1 is aligned the furthest away from the origin, 0.5 is centered, etc.

Overrides:
  `getAlignmentY` in class `Component`
Returns:
  the vertical alignment of this component

### paint

public void paint(Graphics g)
Paints the container. This forwards the paint to any lightweight components that are children of this container. If this method is reimplemented, super.paint(g) should be called so that lightweight components are properly rendered. If a child component is entirely clipped by the current clipping setting in g, paint() will not be forwarded to that child.

Overrides:
  `paint` in class `Component`
Parameters:
  `g` - the specified Graphics window
See Also:
  - `Component.update(Graphics)`

### update

public void update(Graphics g)
Updates the container. This forwards the update to any lightweight components that are children of this container. If this method is reimplemented, super.update(g) should be called so that lightweight components are properly rendered. If a child component is entirely clipped by the current clipping setting in g, update() will not be forwarded to that child.

Overrides:
  `update` in class `Component`
Parameters:
  `g` - the specified Graphics window
See Also:
  - `Component.update(Graphics)`

### print

public void print(Graphics g)
Prints the container. This forwards the print to any lightweight components that are children of this container. If this method is reimplemented, super.print(g) should be called so that lightweight components are properly rendered. If a child component is entirely clipped by the current clipping setting in g, print() will not be forwarded to that child.

Overrides:
  `print` in class `Component`
Parameters:
  `g` - the specified Graphics window
See Also:
  - `Component.update(Graphics)`

### paintComponents

public void paintComponents(Graphics g)
Paints each of the components in this container.

Parameters:
  `g` - the graphics context.
See Also:
  - `Component.paint(Graphics)`
  - `Component.paintAll(Graphics)`

### printComponents

public void printComponents(Graphics g)
Prints each of the components in this container.

Parameters:
  `g` - the graphics context.
See Also:
  - `Component.print(Graphics)`
  - `Component.printAll(Graphics)`

### addContainerListener

public void addContainerListener(ContainerListener l)
Adds the specified container listener to receive container events from this container. If l is null, no exception is thrown and no action is performed.

Refer to AWT Threading Issues for details on AWT's threading model.

Parameters:
  `l` - the container listener
See Also:
  - `removeContainerListener(ContainerListener)`
  - `getContainerListeners()`

### removeContainerListener

public void removeContainerListener(ContainerListener l)
Removes the specified container listener so it no longer receives container events from this container. If l is null, no exception is thrown and no action is performed.

Refer to AWT Threading Issues for details on AWT's threading model.

Parameters:
  `l` - the container listener
See Also:
  - `addContainerListener(ContainerListener)`
  - `getContainerListeners()`

### getContainerListeners

public ContainerListener[] getContainerListeners()
Returns an array of all the container listeners registered on this container.

Returns:
  all of this container's `ContainerListener`s or an empty array if no container listeners are currently registered
Since:
  1.4
See Also:
  - `addContainerListener(ContainerListener)`
  - `removeContainerListener(ContainerListener)`

### getListeners

public <T extends EventListener> T[] getListeners(Class<T> listenerType)
Returns an array of all the objects currently registered as `FooListener`s upon this `Container`. `FooListener`s are registered using the `addFooListener` method.

You can specify the `listenerType` argument with a class literal, such as `FooListener.class`. For example, you can query a `Container c` for its container listeners with the following code:

    ContainerListener[] cls = (ContainerListener[])(c.getListeners(ContainerListener.class));

If no such listeners exist, this method returns an empty array.

Overrides:
  `getListeners` in class `Component`
Type Parameters:
  `T` - the type of the listeners
Parameters:
  `listenerType` - the type of listeners requested; this parameter should specify an interface that descends from `java.util.EventListener`
Returns:
  an array of all objects registered as `FooListener`s on this container, or an empty array if no such listeners have been added
Throws:
  `ClassCastException` - if `listenerType` doesn't specify a class or interface that implements `java.util.EventListener`
  `NullPointerException` - if `listenerType` is `null`
Since:
  1.3
See Also:
  - `getContainerListeners()`

### processEvent

protected void processEvent(AWTEvent e)
Processes events on this container. If the event is a `ContainerEvent`, it invokes the `processContainerEvent` method, else it invokes its superclass's `processEvent`.

Note that if the event parameter is `null` the behavior is unspecified and may result in an exception.

Overrides:
  `processEvent` in class `Component`
Parameters:
  `e` - the event
See Also:
  - `Component.processComponentEvent(ComponentEvent)`
  - `Component.processFocusEvent(FocusEvent)`
  - `Component.processKeyEvent(KeyEvent)`
  - `Component.processMouseEvent(MouseEvent)`
  - `Component.processMouseMotionEvent(MouseEvent)`
  - `Component.processInputMethodEvent(InputMethodEvent)`
  - `Component.processHierarchyEvent(HierarchyEvent)`
  - `Component.processMouseWheelEvent(MouseWheelEvent)`

### processContainerEvent

protected void processContainerEvent(ContainerEvent e)
Processes container events occurring on this container by dispatching them to any registered ContainerListener objects. NOTE: This method will not be called unless container events are enabled for this component; this happens when one of the following occurs:

- A ContainerListener object is registered via `addContainerListener`
- Container events are enabled via `enableEvents`

Note that if the event parameter is `null` the behavior is unspecified and may result in an exception.

Parameters:
  `e` - the container event
See Also:
  - `Component.enableEvents(long)`

### deliverEvent

@Deprecated public void deliverEvent(Event e)
Deprecated.
As of JDK version 1.1, replaced by `dispatchEvent(AWTEvent e)`

Overrides:
  `deliverEvent` in class `Component`
Parameters:
  `e` - the event to deliver

### getComponentAt

public Component getComponentAt(int x, int y)
Locates the component that contains the x,y position. The top-most child component is returned in the case where there is overlap in the components. This is determined by finding the component closest to the index 0 that claims to contain the given point via Component.contains(), except that Components which have native peers take precedence over those which do not (i.e., lightweight Components).

Overrides:
  `getComponentAt` in class `Component`
Parameters:
  `x` - the x coordinate
  `y` - the y coordinate
Returns:
  null if the component does not contain the position. If there is no child component at the requested point and the point is within the bounds of the container the container itself is returned; otherwise the top-most child is returned.
Since:
  1.1
See Also:
  - `Component.contains(int, int)`

### locate

@Deprecated public Component locate(int x, int y)
Deprecated.
As of JDK version 1.1, replaced by `getComponentAt(int, int)`.
Description copied from class: `Component`
Returns the component occupying the position specified (this component, or immediate child component, or null if neither of the first two occupies the location).

Overrides:
  `locate` in class `Component`
Parameters:
  `x` - the x coordinate to search for components at
  `y` - the y coordinate to search for components at
Returns:
  the component at the specified location or `null`

### getComponentAt

public Component getComponentAt(Point p)
Gets the component that contains the specified point.

Overrides:
  `getComponentAt` in class `Component`
Parameters:
  `p` - the point.
Returns:
  returns the component that contains the point, or `null` if the component does not contain the point.
Since:
  1.1
See Also:
  - `Component.contains(int, int)`

### getMousePosition

public Point getMousePosition(boolean allowChildren) throws HeadlessException
Returns the position of the mouse pointer in this `Container`'s coordinate space if the `Container` is under the mouse pointer, otherwise returns `null`. This method is similar to `Component.getMousePosition()` with the exception that it can take the `Container`'s children into account. If `allowChildren` is `false`, this method will return a non-null value only if the mouse pointer is above the `Container` directly, not above the part obscured by children. If `allowChildren` is `true`, this method returns a non-null value if the mouse pointer is above `Container` or any of its descendants.

Parameters:
  `allowChildren` - true if children should be taken into account
Returns:
  mouse coordinates relative to this `Component`, or null
Throws:
  `HeadlessException` - if GraphicsEnvironment.isHeadless() returns true
Since:
  1.5
See Also:
  - `Component.getMousePosition()`

### findComponentAt

public Component findComponentAt(int x, int y)
Locates the visible child component that contains the specified position. The top-most child component is returned in the case where there is overlap in the components. If the containing child component is a Container, this method will continue searching for the deepest nested child component. Components which are not visible are ignored during the search.

The findComponentAt method is different from getComponentAt in that getComponentAt only searches the Container's immediate children; if the containing component is a Container, findComponentAt will search that child to find a nested component.

Parameters:
  `x` - the x coordinate
  `y` - the y coordinate
Returns:
  null if the component does not contain the position. If there is no child component at the requested point and the point is within the bounds of the container the container itself is returned.
Since:
  1.2
See Also:
  - `Component.contains(int, int)`
  - `getComponentAt(int, int)`

### findComponentAt

public Component findComponentAt(Point p)
Locates the visible child component that contains the specified point. The top-most child component is returned in the case where there is overlap in the components. If the containing child component is a Container, this method will continue searching for the deepest nested child component. Components which are not visible are ignored during the search.

The findComponentAt method is different from getComponentAt in that getComponentAt only searches the Container's immediate children; if the containing component is a Container, findComponentAt will search that child to find a nested component.

Parameters:
  `p` - the point.
Returns:
  null if the component does not contain the position. If there is no child component at the requested point and the point is within the bounds of the container the container itself is returned.
Throws:
  `NullPointerException` - if `p` is `null`
Since:
  1.2
See Also:
  - `Component.contains(int, int)`
  - `getComponentAt(int, int)`

### addNotify

public void addNotify()
Makes this Container displayable by connecting it to a native screen resource. Making a container displayable will cause all of its children to be made displayable. This method is called internally by the toolkit and should not be called directly by programs.

Overrides:
  `addNotify` in class `Component`
See Also:
  - `Component.isDisplayable()`
  - `removeNotify()`

### removeNotify

public void removeNotify()
Makes this Container undisplayable by removing its connection to its native screen resource. Making a container undisplayable will cause all of its children to be made undisplayable. This method is called by the toolkit internally and should not be called directly by programs.

Overrides:
  `removeNotify` in class `Component`
See Also:
  - `Component.isDisplayable()`
  - `addNotify()`

### isAncestorOf

public boolean isAncestorOf(Component c)
Checks if the component is contained in the component hierarchy of this container.

Parameters:
  `c` - the component
Returns:
  `true` if it is an ancestor; `false` otherwise.
Since:
  1.1

### paramString

protected String paramString()
Returns a string representing the state of this `Container`. This method is intended to be used only for debugging purposes, and the content and format of the returned string may vary between implementations. The returned string may be empty but may not be `null`.

Overrides:
  `paramString` in class `Component`
Returns:
  the parameter string of this container

### list

public void list(PrintStream out, int indent)
Prints a listing of this container to the specified output stream. The listing starts at the specified indentation.

The immediate children of the container are printed with an indentation of `indent+1`. The children of those children are printed at `indent+2` and so on.

Overrides:
  `list` in class `Component`
Parameters:
  `out` - a print stream
  `indent` - the number of spaces to indent
Throws:
  `NullPointerException` - if `out` is `null`
Since:
  1.0
See Also:
  - `Component.list(java.io.PrintStream, int)`

### list

public void list(PrintWriter out, int indent)
Prints out a list, starting at the specified indentation, to the specified print writer.

The immediate children of the container are printed with an indentation of `indent+1`. The children of those children are printed at `indent+2` and so on.

Overrides:
  `list` in class `Component`
Parameters:
  `out` - a print writer
  `indent` - the number of spaces to indent
Throws:
  `NullPointerException` - if `out` is `null`
Since:
  1.1
See Also:
  - `Component.list(java.io.PrintWriter, int)`

### setFocusTraversalKeys

public void setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)
Sets the focus traversal keys for a given traversal operation for this Container.

The default values for a Container's focus traversal keys are implementation-dependent. Sun recommends that all implementations for a particular native platform use the same default values. The recommendations for Windows and Unix are listed below. These recommendations are used in the Sun AWT implementations.

Recommended default values for a Container's focus traversal keys
Identifier | Meaning | Default
--- | --- | ---
KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS | Normal forward keyboard traversal | TAB on KEY_PRESSED, CTRL-TAB on KEY_PRESSED
KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS | Normal reverse keyboard traversal | SHIFT-TAB on KEY_PRESSED, CTRL-SHIFT-TAB on KEY_PRESSED
KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS | Go up one focus traversal cycle | none
KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS | Go down one focus traversal cycle | none

To disable a traversal key, use an empty Set; Collections.EMPTY_SET is recommended.

Using the AWTKeyStroke API, client code can specify on which of two specific KeyEvents, KEY_PRESSED or KEY_RELEASED, the focus traversal operation will occur. Regardless of which KeyEvent is specified, however, all KeyEvents related to the focus traversal key, including the associated KEY_TYPED event, will be consumed, and will not be dispatched to any Container. It is a runtime error to specify a KEY_TYPED event as mapping to a focus traversal operation, or to map the same event to multiple default focus traversal operations.

If a value of null is specified for the Set, this Container inherits the Set from its parent. If all ancestors of this Container have null specified for the Set, then the current KeyboardFocusManager's default Set is used.

This method may throw a `ClassCastException` if any `Object` in `keystrokes` is not an `AWTKeyStroke`.

Overrides:
  `setFocusTraversalKeys` in class `Component`
Parameters:
  `id` - one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS
  `keystrokes` - the Set of AWTKeyStroke for the specified operation
Throws:
  `IllegalArgumentException` - if id is not one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS, or if keystrokes contains null, or if any keystroke represents a KEY_TYPED event, or if any keystroke already maps to another focus traversal operation for this Container
Since:
  1.4
See Also:
  - `getFocusTraversalKeys(int)`
  - `KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS`
  - `KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS`
  - `KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS`
  - `KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS`

### getFocusTraversalKeys

public Set<AWTKeyStroke> getFocusTraversalKeys(int id)
Returns the Set of focus traversal keys for a given traversal operation for this Container. (See `setFocusTraversalKeys` for a full description of each key.)

If a Set of traversal keys has not been explicitly defined for this Container, then this Container's parent's Set is returned. If no Set has been explicitly defined for any of this Container's ancestors, then the current KeyboardFocusManager's default Set is returned.

Overrides:
  `getFocusTraversalKeys` in class `Component`
Parameters:
  `id` - one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS
Returns:
  the Set of AWTKeyStrokes for the specified operation. The Set will be unmodifiable, and may be empty. null will never be returned.
Throws:
  `IllegalArgumentException` - if id is not one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS
Since:
  1.4
See Also:
  - `setFocusTraversalKeys(int, Set)`
  - `KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS`
  - `KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS`
  - `KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS`
  - `KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS`

### areFocusTraversalKeysSet

public boolean areFocusTraversalKeysSet(int id)
Returns whether the Set of focus traversal keys for the given focus traversal operation has been explicitly defined for this Container. If this method returns `false`, this Container is inheriting the Set from an ancestor, or from the current KeyboardFocusManager.

Overrides:
  `areFocusTraversalKeysSet` in class `Component`
Parameters:
  `id` - one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS
Returns:
  `true` if the Set of focus traversal keys for the given focus traversal operation has been explicitly defined for this Component; `false` otherwise.
Throws:
  `IllegalArgumentException` - if id is not one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS
Since:
  1.4

### isFocusCycleRoot

public boolean isFocusCycleRoot(Container container)
Returns whether the specified Container is the focus cycle root of this Container's focus traversal cycle. Each focus traversal cycle has only a single focus cycle root and each Container which is not a focus cycle root belongs to only a single focus traversal cycle. Containers which are focus cycle roots belong to two cycles: one rooted at the Container itself, and one rooted at the Container's nearest focus-cycle-root ancestor. This method will return `true` for both such Containers in this case.

Overrides:
  `isFocusCycleRoot` in class `Component`
Parameters:
  `container` - the Container to be tested
Returns:
  `true` if the specified Container is a focus-cycle- root of this Container; `false` otherwise
Since:
  1.4
See Also:
  - `isFocusCycleRoot()`

### setFocusTraversalPolicy

public void setFocusTraversalPolicy(FocusTraversalPolicy policy)
Sets the focus traversal policy that will manage keyboard traversal of this Container's children, if this Container is a focus cycle root. If the argument is null, this Container inherits its policy from its focus- cycle-root ancestor. If the argument is non-null, this policy will be inherited by all focus-cycle-root children that have no keyboard- traversal policy of their own (as will, recursively, their focus-cycle- root children).

If this Container is not a focus cycle root, the policy will be remembered, but will not be used or inherited by this or any other Containers until this Container is made a focus cycle root.

Parameters:
  `policy` - the new focus traversal policy for this Container
Since:
  1.4
See Also:
  - `getFocusTraversalPolicy()`
  - `setFocusCycleRoot(boolean)`
  - `isFocusCycleRoot(Container)`

### getFocusTraversalPolicy

public FocusTraversalPolicy getFocusTraversalPolicy()
Returns the focus traversal policy that will manage keyboard traversal of this Container's children, or null if this Container is not a focus cycle root. If no traversal policy has been explicitly set for this Container, then this Container's focus-cycle-root ancestor's policy is returned.

Returns:
  this Container's focus traversal policy, or null if this Container is not a focus cycle root.
Since:
  1.4
See Also:
  - `setFocusTraversalPolicy(FocusTraversalPolicy)`
  - `setFocusCycleRoot(boolean)`
  - `isFocusCycleRoot(Container)`

### isFocusTraversalPolicySet

public boolean isFocusTraversalPolicySet()
Returns whether the focus traversal policy has been explicitly set for this Container. If this method returns `false`, this Container will inherit its focus traversal policy from an ancestor.

Returns:
  `true` if the focus traversal policy has been explicitly set for this Container; `false` otherwise.
Since:
  1.4

### setFocusCycleRoot

public void setFocusCycleRoot(boolean focusCycleRoot)
Sets whether this Container is the root of a focus traversal cycle. Once focus enters a traversal cycle, typically it cannot leave it via focus traversal unless one of the up- or down-cycle keys is pressed. Normal traversal is limited to this Container, and all of this Container's descendants that are not descendants of inferior focus cycle roots. Note that a FocusTraversalPolicy may bend these restrictions, however. For example, ContainerOrderFocusTraversalPolicy supports implicit down-cycle traversal.

The alternative way to specify the traversal order of this Container's children is to make this Container a focus traversal policy provider.

Parameters:
  `focusCycleRoot` - indicates whether this Container is the root of a focus traversal cycle
Since:
  1.4
See Also:
  - `isFocusCycleRoot()`
  - `setFocusTraversalPolicy(FocusTraversalPolicy)`
  - `getFocusTraversalPolicy()`
  - `ContainerOrderFocusTraversalPolicy`
  - `setFocusTraversalPolicyProvider(boolean)`

### isFocusCycleRoot

public boolean isFocusCycleRoot()
Returns whether this Container is the root of a focus traversal cycle. Once focus enters a traversal cycle, typically it cannot leave it via focus traversal unless one of the up- or down-cycle keys is pressed. Normal traversal is limited to this Container, and all of this Container's descendants that are not descendants of inferior focus cycle roots. Note that a FocusTraversalPolicy may bend these restrictions, however. For example, ContainerOrderFocusTraversalPolicy supports implicit down-cycle traversal.

Returns:
  whether this Container is the root of a focus traversal cycle
Since:
  1.4
See Also:
  - `setFocusCycleRoot(boolean)`
  - `setFocusTraversalPolicy(FocusTraversalPolicy)`
  - `getFocusTraversalPolicy()`
  - `ContainerOrderFocusTraversalPolicy`

### setFocusTraversalPolicyProvider

public final void setFocusTraversalPolicyProvider(boolean provider)
Sets whether this container will be used to provide focus traversal policy. Container with this property as `true` will be used to acquire focus traversal policy instead of closest focus cycle root ancestor.

Parameters:
  `provider` - indicates whether this container will be used to provide focus traversal policy
Since:
  1.5
See Also:
  - `setFocusTraversalPolicy(FocusTraversalPolicy)`
  - `getFocusTraversalPolicy()`
  - `isFocusTraversalPolicyProvider()`

### isFocusTraversalPolicyProvider

public final boolean isFocusTraversalPolicyProvider()
Returns whether this container provides focus traversal policy. If this property is set to `true` then when keyboard focus manager searches container hierarchy for focus traversal policy and encounters this container before any other container with this property as true or focus cycle roots then its focus traversal policy will be used instead of focus cycle root's policy.

Returns:
  `true` if this container provides focus traversal policy, `false` otherwise
Since:
  1.5
See Also:
  - `setFocusTraversalPolicy(FocusTraversalPolicy)`
  - `getFocusTraversalPolicy()`
  - `setFocusCycleRoot(boolean)`
  - `setFocusTraversalPolicyProvider(boolean)`

### transferFocusDownCycle

public void transferFocusDownCycle()
Transfers the focus down one focus traversal cycle. If this Container is a focus cycle root, then the focus owner is set to this Container's default Component to focus, and the current focus cycle root is set to this Container. If this Container is not a focus cycle root, then no focus traversal operation occurs.

Since:
  1.4
See Also:
  - `Component.requestFocus()`
  - `isFocusCycleRoot(Container)`
  - `setFocusCycleRoot(boolean)`

### applyComponentOrientation

public void applyComponentOrientation(ComponentOrientation o)
Sets the `ComponentOrientation` property of this container and all components contained within it.

This method changes layout-related information, and therefore, invalidates the component hierarchy.

Overrides:
  `applyComponentOrientation` in class `Component`
Parameters:
  `o` - the new component orientation of this container and the components contained within it.
Throws:
  `NullPointerException` - if `orientation` is null.
Since:
  1.4
See Also:
  - `Component.setComponentOrientation(ComponentOrientation)`
  - `Component.getComponentOrientation()`
  - `invalidate()`

### addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
Adds a PropertyChangeListener to the listener list. The listener is registered for all bound properties of this class, including the following:

- this Container's font ("font")
- this Container's background color ("background")
- this Container's foreground color ("foreground")
- this Container's focusability ("focusable")
- this Container's focus traversal keys enabled state ("focusTraversalKeysEnabled")
- this Container's Set of FORWARD_TRAVERSAL_KEYS ("forwardFocusTraversalKeys")
- this Container's Set of BACKWARD_TRAVERSAL_KEYS ("backwardFocusTraversalKeys")
- this Container's Set of UP_CYCLE_TRAVERSAL_KEYS ("upCycleFocusTraversalKeys")
- this Container's Set of DOWN_CYCLE_TRAVERSAL_KEYS ("downCycleFocusTraversalKeys")
- this Container's focus traversal policy ("focusTraversalPolicy")
- this Container's focus-cycle-root state ("focusCycleRoot")

Note that if this Container is inheriting a bound property, then no event will be fired in response to a change in the inherited property.

If listener is null, no exception is thrown and no action is performed.

Overrides:
  `addPropertyChangeListener` in class `Component`
Parameters:
  `listener` - the PropertyChangeListener to be added
See Also:
  - `Component.removePropertyChangeListener(PropertyChangeListener)`
  - `addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)`

### addPropertyChangeListener

public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
Adds a PropertyChangeListener to the listener list for a specific property. The specified property may be user-defined, or one of the following defaults:

- this Container's font ("font")
- this Container's background color ("background")
- this Container's foreground color ("foreground")
- this Container's focusability ("focusable")
- this Container's focus traversal keys enabled state ("focusTraversalKeysEnabled")
- this Container's Set of FORWARD_TRAVERSAL_KEYS ("forwardFocusTraversalKeys")
- this Container's Set of BACKWARD_TRAVERSAL_KEYS ("backwardFocusTraversalKeys")
- this Container's Set of UP_CYCLE_TRAVERSAL_KEYS ("upCycleFocusTraversalKeys")
- this Container's Set of DOWN_CYCLE_TRAVERSAL_KEYS ("downCycleFocusTraversalKeys")
- this Container's focus traversal policy ("focusTraversalPolicy")
- this Container's focus-cycle-root state ("focusCycleRoot")
- this Container's focus-traversal-policy-provider state("focusTraversalPolicyProvider")
- this Container's focus-traversal-policy-provider state("focusTraversalPolicyProvider")

Note that if this Container is inheriting a bound property, then no event will be fired in response to a change in the inherited property.

If listener is null, no exception is thrown and no action is performed.

Overrides:
  `addPropertyChangeListener` in class `Component`
Parameters:
  `propertyName` - one of the property names listed above
  `listener` - the PropertyChangeListener to be added
See Also:
  - `addPropertyChangeListener(java.beans.PropertyChangeListener)`
  - `Component.removePropertyChangeListener(PropertyChangeListener)`