FileDocCategorySizeDatePackage
Component.javaAPI DocJava SE 5 API315537Fri Aug 26 14:56:44 BST 2005java.awt

Component

public abstract class Component extends Object implements Serializable, ImageObserver, MenuContainer
A component is an object having a graphical representation that can be displayed on the screen and that can interact with the user. Examples of components are the buttons, checkboxes, and scrollbars of a typical graphical user interface.

The Component class is the abstract superclass of the nonmenu-related Abstract Window Toolkit components. Class Component can also be extended directly to create a lightweight component. A lightweight component is a component that is not associated with a native opaque window.

Serialization

It is important to note that only AWT listeners which conform to the Serializable protocol will be saved when the object is stored. If an AWT object has listeners that aren't marked serializable, they will be dropped at writeObject time. Developers will need, as always, to consider the implications of making an object serializable. One situation to watch out for is this:
import java.awt.*;
import java.awt.event.*;
import java.io.Serializable;

class MyApp implements ActionListener, Serializable
{
BigObjectThatShouldNotBeSerializedWithAButton bigOne;
Button aButton = new Button();

MyApp()
{
// Oops, now aButton has a listener with a reference
// to bigOne!
aButton.addActionListener(this);
}

public void actionPerformed(ActionEvent e)
{
System.out.println("Hello There");
}
}
In this example, serializing aButton by itself will cause MyApp and everything it refers to to be serialized as well. The problem is that the listener is serializable by coincidence, not by design. To separate the decisions about MyApp and the ActionListener being serializable one can use a nested class, as in the following example:
import java.awt.*;
import java.awt.event.*;
import java.io.Serializable;

class MyApp java.io.Serializable
{
BigObjectThatShouldNotBeSerializedWithAButton bigOne;
Button aButton = new Button();

class MyActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("Hello There");
}
}

MyApp()
{
aButton.addActionListener(new MyActionListener());
}
}

Note: For more information on the paint mechanisms utilitized by AWT and Swing, including information on how to write the most efficient painting code, see Painting in AWT and Swing.

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.

version
1.389, 01/04/05
author
Arthur van Hoff
author
Sami Shaio

Fields Summary
private static final Logger
focusLog
private static final Logger
log
transient ComponentPeer
peer
The peer of the component. The peer implements the component's behavior. The peer is set when the Component is added to a container that also is a peer.
transient Container
parent
The parent of the object. It may be null for top-level components.
transient AppContext
appContext
The AppContext of the component. Applets/Plugin may change the AppContext.
int
x
The x position of the component in the parent's coordinate system.
int
y
The y position of the component in the parent's coordinate system.
int
width
The width of the component.
int
height
The height of the component.
Color
foreground
The foreground color for this component. foreground can be null.
Color
background
The background color for this component. background can be null.
Font
font
The font used by this component. The font can be null.
Font
peerFont
The font which the peer is currently using. (null if no peer exists.)
Cursor
cursor
The cursor displayed when pointer is over this component. This value can be null.
Locale
locale
The locale for the component.
transient GraphicsConfiguration
graphicsConfig
A reference to a GraphicsConfiguration object used to describe the characteristics of a graphics destination. This value can be null.
transient BufferStrategy
bufferStrategy
A reference to a BufferStrategy object used to manipulate the buffers on this component.
boolean
ignoreRepaint
True when the object should ignore all repaint events.
boolean
visible
True when the object is visible. An object that is not visible is not drawn on the screen.
boolean
enabled
True when the object is enabled. An object that is not enabled does not interact with the user.
boolean
valid
True when the object is valid. An invalid object needs to be layed out. This flag is set to false when the object size is changed.
DropTarget
dropTarget
The DropTarget associated with this component.
Vector
popups
private String
name
A component's name. This field can be null.
private boolean
nameExplicitlySet
A bool to determine whether the name has been set explicitly. nameExplicitlySet will be false if the name has not been set and true if it has.
private boolean
focusable
Indicates whether this Component can be focused.
private static final int
FOCUS_TRAVERSABLE_UNKNOWN
private static final int
FOCUS_TRAVERSABLE_DEFAULT
private static final int
FOCUS_TRAVERSABLE_SET
private int
isFocusTraversableOverridden
Tracks whether this Component is relying on default focus travesability.
Set[]
focusTraversalKeys
The focus traversal keys. These keys will generate focus traversal behavior for Components for which focus traversal keys are enabled. If a value of null is specified for a traversal key, this Component inherits that traversal key from its parent. If all ancestors of this Component have null specified for that traversal key, then the current KeyboardFocusManager's default traversal key is used.
private static final String[]
focusTraversalKeyPropertyNames
private boolean
focusTraversalKeysEnabled
Indicates whether focus traversal keys are enabled for this Component. Components for which focus traversal keys are disabled receive key events for focus traversal keys. Components for which focus traversal keys are enabled do not see these events; instead, the events are automatically converted to traversal operations.
static final Object
LOCK
The locking object for AWT component-tree and layout operations.
Dimension
minSize
Minimum size. (This field perhaps should have been transient).
boolean
minSizeSet
Whether or not setMinimumSize has been invoked with a non-null value.
Dimension
prefSize
Preferred size. (This field perhaps should have been transient).
boolean
prefSizeSet
Whether or not setPreferredSize has been invoked with a non-null value.
Dimension
maxSize
Maximum size
boolean
maxSizeSet
Whether or not setMaximumSize has been invoked with a non-null value.
transient ComponentOrientation
componentOrientation
The orientation for this component.
boolean
newEventsOnly
newEventsOnly will be true if the event is one of the event types enabled for the component. It will then allow for normal processing to continue. If it is false the event is passed to the component's parent and up the ancestor tree until the event has been consumed.
transient ComponentListener
componentListener
transient FocusListener
focusListener
transient HierarchyListener
hierarchyListener
transient HierarchyBoundsListener
hierarchyBoundsListener
transient KeyListener
keyListener
transient MouseListener
mouseListener
transient MouseMotionListener
mouseMotionListener
transient MouseWheelListener
mouseWheelListener
transient InputMethodListener
inputMethodListener
transient RuntimeException
windowClosingException
static final String
actionListenerK
Internal, constants for serialization
static final String
adjustmentListenerK
static final String
componentListenerK
static final String
containerListenerK
static final String
focusListenerK
static final String
itemListenerK
static final String
keyListenerK
static final String
mouseListenerK
static final String
mouseMotionListenerK
static final String
mouseWheelListenerK
static final String
textListenerK
static final String
ownedWindowK
static final String
windowListenerK
static final String
inputMethodListenerK
static final String
hierarchyListenerK
static final String
hierarchyBoundsListenerK
static final String
windowStateListenerK
static final String
windowFocusListenerK
long
eventMask
The eventMask is ONLY set by subclasses via enableEvents. The mask should NOT be set when listeners are registered so that we can distinguish the difference between when listeners request events and subclasses request them. One bit is used to indicate whether input methods are enabled; this bit is set by enableInputMethods and is on by default.
private static final sun.awt.DebugHelper
dbg
static boolean
isInc
Static properties for incremental drawing.
static int
incRate
public static final float
TOP_ALIGNMENT
Ease-of-use constant for getAlignmentY(). Specifies an alignment to the top of the component.
public static final float
CENTER_ALIGNMENT
Ease-of-use constant for getAlignmentY and getAlignmentX. Specifies an alignment to the center of the component
public static final float
BOTTOM_ALIGNMENT
Ease-of-use constant for getAlignmentY. Specifies an alignment to the bottom of the component.
public static final float
LEFT_ALIGNMENT
Ease-of-use constant for getAlignmentX. Specifies an alignment to the left side of the component.
public static final float
RIGHT_ALIGNMENT
Ease-of-use constant for getAlignmentX. Specifies an alignment to the right side of the component.
private static final long
serialVersionUID
private PropertyChangeSupport
changeSupport
If any PropertyChangeListeners have been registered, the changeSupport field describes them.
boolean
isPacked
private transient Object
privateKey
This object is used as a key for internal hashtables.
private int
boundsOp
Pseudoparameter for direct Geometry API (setLocation, setBounds setSize to signal setBounds what's changing. Should be used under TreeLock. This is only needed due to the inability to change the cross-calling order of public and deprecated methods.
static Hashtable
metrics
saves an internal cache of FontMetrics for better performance
private int
componentSerializedDataVersion
Component Serialized Data Version.
transient NativeInLightFixer
nativeInLightFixer
AccessibleContext
accessibleContext
Constructors Summary
protected Component()
Constructs a new component. Class Component can be extended directly to create a lightweight component that does not utilize an opaque native window. A lightweight component must be hosted by a native container somewhere higher up in the component tree (for example, by a Frame object).

        appContext = AppContext.getAppContext();
    
Methods Summary
public booleanaction(java.awt.Event evt, java.lang.Object what)

deprecated
As of JDK version 1.1, should register this component as ActionListener on component which fires action events.

        return false;
    
public synchronized voidadd(java.awt.PopupMenu popup)
Adds the specified popup menu to the component.

param
popup the popup menu to be added to the component.
see
#remove(MenuComponent)
since
JDK1.1

        if (popup.parent != null) {
            popup.parent.remove(popup);
        }
        if (popups == null) {
            popups = new Vector();
        }
        popups.addElement(popup);
        popup.parent = this;

        if (peer != null) {
            if (popup.peer == null) {
                popup.addNotify();
            }
        }
    
public synchronized voidaddComponentListener(java.awt.event.ComponentListener l)
Adds the specified component listener to receive component events from this component. If listener l is null, no exception is thrown and no action is performed.

param
l the component listener
see
java.awt.event.ComponentEvent
see
java.awt.event.ComponentListener
see
#removeComponentListener
see
#getComponentListeners
since
JDK1.1

        if (l == null) {
            return;
        }
        componentListener = AWTEventMulticaster.add(componentListener, l);
        newEventsOnly = true;
    
public synchronized voidaddFocusListener(java.awt.event.FocusListener l)
Adds the specified focus listener to receive focus events from this component when this component gains input focus. If listener l is null, no exception is thrown and no action is performed.

param
l the focus listener
see
java.awt.event.FocusEvent
see
java.awt.event.FocusListener
see
#removeFocusListener
see
#getFocusListeners
since
JDK1.1

        if (l == null) {
            return;
        }
        focusListener = AWTEventMulticaster.add(focusListener, l);
        newEventsOnly = true;

        // if this is a lightweight component, enable focus events
        // in the native container.
        if (peer instanceof LightweightPeer) {
            parent.proxyEnableEvents(AWTEvent.FOCUS_EVENT_MASK);
        }
    
public voidaddHierarchyBoundsListener(java.awt.event.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. If listener l is null, no exception is thrown and no action is performed.

param
l the hierarchy bounds listener
see
java.awt.event.HierarchyEvent
see
java.awt.event.HierarchyBoundsListener
see
#removeHierarchyBoundsListener
see
#getHierarchyBoundsListeners
since
1.3

        if (l == null) {
            return;
        }
        boolean notifyAncestors;
        synchronized (this) {
            notifyAncestors =
                (hierarchyBoundsListener == null &&
                 (eventMask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) == 0);
            hierarchyBoundsListener =
                AWTEventMulticaster.add(hierarchyBoundsListener, l);
            notifyAncestors = (notifyAncestors &&
                               hierarchyBoundsListener != null);
            newEventsOnly = true;
        }
        if (notifyAncestors) {
            synchronized (getTreeLock()) {
                adjustListeningChildrenOnParent(
                                                AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK, 1);
            }
        }
    
public voidaddHierarchyListener(java.awt.event.HierarchyListener l)
Adds the specified hierarchy listener to receive hierarchy changed events from this component when the hierarchy to which this container belongs changes. If listener l is null, no exception is thrown and no action is performed.

param
l the hierarchy listener
see
java.awt.event.HierarchyEvent
see
java.awt.event.HierarchyListener
see
#removeHierarchyListener
see
#getHierarchyListeners
since
1.3

        if (l == null) {
            return;
        }
        boolean notifyAncestors;
        synchronized (this) {
            notifyAncestors =
                (hierarchyListener == null &&
                 (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) == 0);
            hierarchyListener = AWTEventMulticaster.add(hierarchyListener, l);
            notifyAncestors = (notifyAncestors && hierarchyListener != null);
            newEventsOnly = true;
        }
        if (notifyAncestors) {
            synchronized (getTreeLock()) {
                adjustListeningChildrenOnParent(AWTEvent.HIERARCHY_EVENT_MASK,
                                                1);
            }
        }
    
public synchronized voidaddInputMethodListener(java.awt.event.InputMethodListener l)
Adds the specified input method listener to receive input method events from this component. A component will only receive input method events from input methods if it also overrides getInputMethodRequests to return an InputMethodRequests instance. If listener l is null, no exception is thrown and no action is performed.

param
l the input method listener
see
java.awt.event.InputMethodEvent
see
java.awt.event.InputMethodListener
see
#removeInputMethodListener
see
#getInputMethodListeners
see
#getInputMethodRequests
since
1.2

        if (l == null) {
            return;
        }
        inputMethodListener = AWTEventMulticaster.add(inputMethodListener, l);
        newEventsOnly = true;
    
public synchronized voidaddKeyListener(java.awt.event.KeyListener l)
Adds the specified key listener to receive key events from this component. If l is null, no exception is thrown and no action is performed.

param
l the key listener.
see
java.awt.event.KeyEvent
see
java.awt.event.KeyListener
see
#removeKeyListener
see
#getKeyListeners
since
JDK1.1

        if (l == null) {
            return;
        }
        keyListener = AWTEventMulticaster.add(keyListener, l);
        newEventsOnly = true;

        // if this is a lightweight component, enable key events
        // in the native container.
        if (peer instanceof LightweightPeer) {
            parent.proxyEnableEvents(AWTEvent.KEY_EVENT_MASK);
        }
    
public synchronized voidaddMouseListener(java.awt.event.MouseListener l)
Adds the specified mouse listener to receive mouse events from this component. If listener l is null, no exception is thrown and no action is performed.

param
l the mouse listener
see
java.awt.event.MouseEvent
see
java.awt.event.MouseListener
see
#removeMouseListener
see
#getMouseListeners
since
JDK1.1

        if (l == null) {
            return;
        }
        mouseListener = AWTEventMulticaster.add(mouseListener,l);
        newEventsOnly = true;

        // if this is a lightweight component, enable mouse events
        // in the native container.
        if (peer instanceof LightweightPeer) {
            parent.proxyEnableEvents(AWTEvent.MOUSE_EVENT_MASK);
        }
    
public synchronized voidaddMouseMotionListener(java.awt.event.MouseMotionListener l)
Adds the specified mouse motion listener to receive mouse motion events from this component. If listener l is null, no exception is thrown and no action is performed.

param
l the mouse motion listener
see
java.awt.event.MouseEvent
see
java.awt.event.MouseMotionListener
see
#removeMouseMotionListener
see
#getMouseMotionListeners
since
JDK1.1

        if (l == null) {
            return;
        }
        mouseMotionListener = AWTEventMulticaster.add(mouseMotionListener,l);
        newEventsOnly = true;

        // if this is a lightweight component, enable mouse events
        // in the native container.
        if (peer instanceof LightweightPeer) {
            parent.proxyEnableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
        }
    
public synchronized voidaddMouseWheelListener(java.awt.event.MouseWheelListener l)
Adds the specified mouse wheel listener to receive mouse wheel events from this component. Containers also receive mouse wheel events from sub-components.

For information on how mouse wheel events are dispatched, see the class description for {@link MouseWheelEvent}.

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

param
l the mouse wheel listener
see
java.awt.event.MouseWheelEvent
see
java.awt.event.MouseWheelListener
see
#removeMouseWheelListener
see
#getMouseWheelListeners
since
1.4

        if (l == null) {
            return;
        }
        mouseWheelListener = AWTEventMulticaster.add(mouseWheelListener,l);
        newEventsOnly = true;

        dbg.println("Component.addMouseWheelListener(): newEventsOnly = " + newEventsOnly);

        // if this is a lightweight component, enable mouse events
        // in the native container.
        if (peer instanceof LightweightPeer) {
            parent.proxyEnableEvents(AWTEvent.MOUSE_WHEEL_EVENT_MASK);
        }
    
public voidaddNotify()
Makes this Component displayable by connecting it to a native screen resource. This method is called internally by the toolkit and should not be called directly by programs.

see
#isDisplayable
see
#removeNotify
since
JDK1.0

        synchronized (getTreeLock()) {
            ComponentPeer peer = this.peer;
            if (peer == null || peer instanceof LightweightPeer){
                if (peer == null) {
                    // Update both the Component's peer variable and the local
                    // variable we use for thread safety.
                    this.peer = peer = getToolkit().createComponent(this);
                }

                // This is a lightweight component which means it won't be
                // able to get window-related events by itself.  If any
                // have been enabled, then the nearest native container must
                // be enabled.
                if (parent != null) {
                    long mask = 0;
                    if ((mouseListener != null) || ((eventMask & AWTEvent.MOUSE_EVENT_MASK) != 0)) {
                        mask |= AWTEvent.MOUSE_EVENT_MASK;
                    }
                    if ((mouseMotionListener != null) ||
                        ((eventMask & AWTEvent.MOUSE_MOTION_EVENT_MASK) != 0)) {
                        mask |= AWTEvent.MOUSE_MOTION_EVENT_MASK;
                    }
                    if ((mouseWheelListener != null ) ||
                        ((eventMask & AWTEvent.MOUSE_WHEEL_EVENT_MASK) != 0)) {
                        mask |= AWTEvent.MOUSE_WHEEL_EVENT_MASK;
                    }
                    if (focusListener != null || (eventMask & AWTEvent.FOCUS_EVENT_MASK) != 0) {
                        mask |= AWTEvent.FOCUS_EVENT_MASK;
                    }
                    if (keyListener != null || (eventMask & AWTEvent.KEY_EVENT_MASK) != 0) {
                        mask |= AWTEvent.KEY_EVENT_MASK;
                    }
                    if (mask != 0) {
                        parent.proxyEnableEvents(mask);
                    }
                }
            } else {
                // It's native.  If the parent is lightweight it
                // will need some help.
                Container parent = this.parent;
                if (parent != null && parent.peer instanceof LightweightPeer) {
                    nativeInLightFixer = new NativeInLightFixer();
                }
            }
            invalidate();

            int npopups = (popups != null? popups.size() : 0);
            for (int i = 0 ; i < npopups ; i++) {
                PopupMenu popup = (PopupMenu)popups.elementAt(i);
                popup.addNotify();
            }
            
            if (dropTarget != null) dropTarget.addNotify(peer);

            peerFont = getFont();

            // Update stacking order
            if (parent != null && parent.peer != null) {
                ContainerPeer parentContPeer = (ContainerPeer) parent.peer;
                // if our parent is lightweight and we are not
                // we should call restack on nearest heavyweight
                // container.
                if (parentContPeer instanceof LightweightPeer
                    && ! (peer instanceof LightweightPeer))
                {
                    Container hwParent = getNativeContainer();
                    if (hwParent != null && hwParent.peer != null) {
                        parentContPeer = (ContainerPeer) hwParent.peer;
                    }
                }
                if (parentContPeer.isRestackSupported()) {
                    parentContPeer.restack();
                }
            }

            if (hierarchyListener != null ||
                (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) != 0 ||
                Toolkit.enabledOnToolkit(AWTEvent.HIERARCHY_EVENT_MASK)) {
                HierarchyEvent e =
                    new HierarchyEvent(this, HierarchyEvent.HIERARCHY_CHANGED,
                                       this, parent,
                                       HierarchyEvent.DISPLAYABILITY_CHANGED |
                                       ((isRecursivelyVisible())
                                        ? HierarchyEvent.SHOWING_CHANGED
                                        : 0));
                dispatchEvent(e);
            }
        }
    
public synchronized voidaddPropertyChangeListener(java.beans.PropertyChangeListener listener)
Adds a PropertyChangeListener to the listener list. The listener is registered for all bound properties of this class, including the following:
  • this Component's font ("font")
  • this Component's background color ("background")
  • this Component's foreground color ("foreground")
  • this Component's focusability ("focusable")
  • this Component's focus traversal keys enabled state ("focusTraversalKeysEnabled")
  • this Component's Set of FORWARD_TRAVERSAL_KEYS ("forwardFocusTraversalKeys")
  • this Component's Set of BACKWARD_TRAVERSAL_KEYS ("backwardFocusTraversalKeys")
  • this Component's Set of UP_CYCLE_TRAVERSAL_KEYS ("upCycleFocusTraversalKeys")
  • this Component's preferred size ("preferredSize")
  • this Component's minimum size ("minimumSize")
  • this Component's maximum size ("maximumSize")
  • this Component's name ("name")
Note that if this Component 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.

param
listener the property change listener to be added
see
#removePropertyChangeListener
see
#getPropertyChangeListeners
see
#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)

        if (listener == null) {
            return;
        }
        if (changeSupport == null) {
            changeSupport = new PropertyChangeSupport(this);
        }
        changeSupport.addPropertyChangeListener(listener);
    
public synchronized voidaddPropertyChangeListener(java.lang.String propertyName, java.beans.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:
  • this Component's font ("font")
  • this Component's background color ("background")
  • this Component's foreground color ("foreground")
  • this Component's focusability ("focusable")
  • this Component's focus traversal keys enabled state ("focusTraversalKeysEnabled")
  • this Component's Set of FORWARD_TRAVERSAL_KEYS ("forwardFocusTraversalKeys")
  • this Component's Set of BACKWARD_TRAVERSAL_KEYS ("backwardFocusTraversalKeys")
  • this Component's Set of UP_CYCLE_TRAVERSAL_KEYS ("upCycleFocusTraversalKeys")
Note that if this Component is inheriting a bound property, then no event will be fired in response to a change in the inherited property.

If propertyName or listener is null, no exception is thrown and no action is taken.

param
propertyName one of the property names listed above
param
listener the property change listener to be added
see
#removePropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
see
#getPropertyChangeListeners(java.lang.String)
see
#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)

        if (listener == null) {
            return;
        }
        if (changeSupport == null) {
            changeSupport = new PropertyChangeSupport(this);
        }
        changeSupport.addPropertyChangeListener(propertyName, listener);
    
voidadjustListeningChildrenOnParent(long mask, int num)

        if (parent != null) {
            parent.adjustListeningChildren(mask, num);
        }
    
public voidapplyComponentOrientation(java.awt.ComponentOrientation orientation)
Sets the ComponentOrientation property of this component and all components contained within it.

param
orientation the new component orientation of this component and the components contained within it.
exception
NullPointerException if orientation is null.
see
#setComponentOrientation
see
#getComponentOrientation
since
1.4

        if (orientation == null) {
            throw new NullPointerException();
        }
        setComponentOrientation(orientation);
    
public booleanareFocusTraversalKeysSet(int id)
Returns whether the Set of focus traversal keys for the given focus traversal operation has been explicitly defined for this Component. If this method returns false, this Component is inheriting the Set from an ancestor, or from the current KeyboardFocusManager.

param
id one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS
return
true if the 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, or KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS
since
1.4

        if (id < 0 || id >= KeyboardFocusManager.TRAVERSAL_KEY_LENGTH - 1) {
            throw new IllegalArgumentException("invalid focus traversal key identifier");
        }
 
        return (focusTraversalKeys != null && focusTraversalKeys[id] != null);
    
booleanareInputMethodsEnabled()

        // in 1.2, we assume input method support is required for all
        // components that handle key events, but components can turn off
        // input methods by calling enableInputMethods(false).
        return ((eventMask & AWTEvent.INPUT_METHODS_ENABLED_MASK) != 0) &&
            ((eventMask & AWTEvent.KEY_EVENT_MASK) != 0 || keyListener != null);
    
voidautoProcessMouseWheel(java.awt.event.MouseWheelEvent e)

final voidautoTransferFocus(boolean clearOnFailure)

        Component toTest = KeyboardFocusManager.
            getCurrentKeyboardFocusManager().getFocusOwner();
        if (toTest != this) {
            if (toTest != null) {
                toTest.autoTransferFocus(clearOnFailure);
            }
            return;
        }

        // the following code will execute only if this Component is the focus
        // owner

        if (!(isDisplayable() && isVisible() && isEnabled() && isFocusable())) {
            doAutoTransfer(clearOnFailure);
            return;
        }

        toTest = getParent();

        while (toTest != null && !(toTest instanceof Window)) {
            if (!(toTest.isDisplayable() && toTest.isVisible() &&
                  (toTest.isEnabled() || toTest.isLightweight()))) {
                doAutoTransfer(clearOnFailure);
                return;
            }
            toTest = toTest.getParent();
        }
    
public java.awt.Rectanglebounds()

deprecated
As of JDK version 1.1, replaced by getBounds().

        return new Rectangle(x, y, width, height);
    
final booleancanBeFocusOwner()
Checks that this component meets the prerequesites to be focus owner: - it is enabled, visible, focusable - it's parents are all enabled and showing - top-level window is focusable - if focus cycle root has DefaultFocusTraversalPolicy then it also checks that this policy accepts this component as focus owner

since
1.5

        // - it is enabled, visible, focusable        
        if (!(isEnabled() && isDisplayable() && isVisible() && isFocusable())) {
            return false;
        }
        
        // - it's parents are all enabled and showing
        synchronized(getTreeLock()) {        
            if (parent != null) {
                return parent.canContainFocusOwner(this);
            }
        }
        return true;
    
voidcheckGD(java.lang.String stringID)
Checks that this component's GraphicsDevice idString matches the string argument.

        if (graphicsConfig != null) {
            if (!graphicsConfig.getDevice().getIDstring().equals(stringID)) {
                throw new IllegalArgumentException(
                                                   "adding a container to a container on a different GraphicsDevice");
            }
        }
    
public intcheckImage(java.awt.Image image, java.awt.image.ImageObserver observer)
Returns the status of the construction of a screen representation of the specified image.

This method does not cause the image to begin loading. An application must use the prepareImage method to force the loading of an image.

Information on the flags returned by this method can be found with the discussion of the ImageObserver interface.

param
image the Image object whose status is being checked
param
observer the ImageObserver object to be notified as the image is being prepared
return
the bitwise inclusive OR of ImageObserver flags indicating what information about the image is currently available
see
#prepareImage(Image, int, int, java.awt.image.ImageObserver)
see
Toolkit#checkImage(Image, int, int, java.awt.image.ImageObserver)
see
java.awt.image.ImageObserver
since
JDK1.0

        return checkImage(image, -1, -1, observer);
    
public intcheckImage(java.awt.Image image, int width, int height, java.awt.image.ImageObserver observer)
Returns the status of the construction of a screen representation of the specified image.

This method does not cause the image to begin loading. An application must use the prepareImage method to force the loading of an image.

The checkImage method of Component calls its peer's checkImage method to calculate the flags. If this component does not yet have a peer, the component's toolkit's checkImage method is called instead.

Information on the flags returned by this method can be found with the discussion of the ImageObserver interface.

param
image the Image object whose status is being checked
param
width the width of the scaled version whose status is to be checked
param
height the height of the scaled version whose status is to be checked
param
observer the ImageObserver object to be notified as the image is being prepared
return
the bitwise inclusive OR of ImageObserver flags indicating what information about the image is currently available
see
#prepareImage(Image, int, int, java.awt.image.ImageObserver)
see
Toolkit#checkImage(Image, int, int, java.awt.image.ImageObserver)
see
java.awt.image.ImageObserver
since
JDK1.0

        ComponentPeer peer = this.peer;
        if (peer instanceof LightweightPeer) {
            return (parent != null) 
                ? parent.checkImage(image, width, height, observer)
                : getToolkit().checkImage(image, width, height, observer);
        } else {
            return (peer != null)
                ? peer.checkImage(image, width, height, observer)
                : getToolkit().checkImage(image, width, height, observer);
        }
    
booleancheckWindowClosingException()

        if (windowClosingException != null) {
            if (this instanceof Dialog) {
                ((Dialog)this).interruptBlocking();
            } else {
                windowClosingException.fillInStackTrace();
                windowClosingException.printStackTrace();
                windowClosingException = null;
            }
            return true;
        }
        return false;
    
voidclearCurrentFocusCycleRootOnHide()

        /* do nothing */
    
voidclearMostRecentFocusOwnerOnHide()

        KeyboardFocusManager.clearMostRecentFocusOwner(this);
    
protected java.awt.AWTEventcoalesceEvents(java.awt.AWTEvent existingEvent, java.awt.AWTEvent newEvent)
Potentially coalesce an event being posted with an existing event. This method is called by EventQueue.postEvent if an event with the same ID as the event to be posted is found in the queue (both events must have this component as their source). This method either returns a coalesced event which replaces the existing event (and the new event is then discarded), or null to indicate that no combining should be done (add the second event to the end of the queue). Either event parameter may be modified and returned, as the other one is discarded unless null is returned.

This implementation of coalesceEvents coalesces two event types: mouse move (and drag) events, and paint (and update) events. For mouse move events the last event is always returned, causing intermediate moves to be discarded. For paint events, the new event is coalesced into a complex RepaintArea in the peer. The new AWTEvent is always returned.

param
existingEvent the event already on the EventQueue
param
newEvent the event being posted to the EventQueue
return
a coalesced event, or null indicating that no coalescing was done

        int id = existingEvent.getID();
        if (dbg.on) {
            dbg.assertion(id == newEvent.getID() &&
                          existingEvent.getSource().equals(newEvent.getSource()));
        }

        switch (id) {
          case Event.MOUSE_MOVE:
          case Event.MOUSE_DRAG: {
              MouseEvent e = (MouseEvent)existingEvent;
              if (e.getModifiers() == ((MouseEvent)newEvent).getModifiers()) {
                  // Just return the newEvent, causing the old to be
                  // discarded.
                  return newEvent;
              }
              break;
          }
          case PaintEvent.PAINT:
          case PaintEvent.UPDATE: {          
              if(peer != null && !(peer instanceof LightweightPeer)) {
                  // EventQueue.postEvent should use peer.coalescePaintEvent
                  return newEvent;
              }
              // This approach to coalescing paint events seems to be 
              // better than any heuristic for unioning rectangles.
              PaintEvent existingPaintEvent = (PaintEvent) existingEvent;
              PaintEvent newPaintEvent = (PaintEvent) newEvent;
              Rectangle existingRect = existingPaintEvent.getUpdateRect();
              Rectangle newRect = newPaintEvent.getUpdateRect();
              
              if (dbg.on) {
                  dbg.println("Component::coalesceEvents : newEvent : nullPeer : x = " + 
                              newRect.x + " y = " + newRect.y + " width = " + newRect.width + 
                              " height = " + newRect.height); 
              }
              
              if (existingRect.contains(newRect)) {
                  return existingEvent;
              }
              if (newRect.contains(existingRect)) {
                  return newEvent;
              }
              
              break;
          }
        }

        return null;
    
java.lang.StringconstructComponentName()
Constructs a name for this component. Called by getName when the name is null.

        return null; // For strict compliance with prior platform versions, a Component
                     // that doesn't set its name should return null from
                     // getName()
    
public booleancontains(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.

param
x the x coordinate of the point
param
y the y coordinate of the point
see
#getComponentAt(int, int)
since
JDK1.1

        return inside(x, y);
    
public booleancontains(java.awt.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.

param
p the point
see
#getComponentAt(Point)
since
JDK1.1

        return contains(p.x, p.y);
    
booleancontainsFocus()

        return isFocusOwner();
    
intcountHierarchyMembers()

        return 1;
    
voidcreateBufferStrategy(int numBuffers)
Creates a new strategy for multi-buffering on this component. Multi-buffering is useful for rendering performance. This method attempts to create the best strategy available with the number of buffers supplied. It will always create a BufferStrategy with that number of buffers. A page-flipping strategy is attempted first, then a blitting strategy using accelerated buffers. Finally, an unaccelerated blitting strategy is used.

Each time this method is called, the existing buffer strategy for this component is discarded.

param
numBuffers number of buffers to create, including the front buffer
exception
IllegalArgumentException if numBuffers is less than 1.
exception
IllegalStateException if the component is not displayable
see
#isDisplayable
see
#getBufferStrategy()
since
1.4

        BufferCapabilities bufferCaps;
        if (numBuffers > 1) {
            // Try to create a page-flipping strategy
            bufferCaps = new BufferCapabilities(
                                                new ImageCapabilities(true), new ImageCapabilities(true),
                                                BufferCapabilities.FlipContents.UNDEFINED);
            try {
                createBufferStrategy(numBuffers, bufferCaps);
                return; // Success
            } catch (AWTException e) {
                // Failed
            }
        }
        // Try a blitting (but still accelerated) strategy
        bufferCaps = new BufferCapabilities(
                                            new ImageCapabilities(true), new ImageCapabilities(true), null);
        try {
            createBufferStrategy(numBuffers, bufferCaps);
            return; // Success
        } catch (AWTException e) {
            // Failed
        }
        // Try an unaccelerated blitting strategy
        bufferCaps = new BufferCapabilities(
                                            new ImageCapabilities(false), new ImageCapabilities(false), null);
        try {
            createBufferStrategy(numBuffers, bufferCaps);
            return; // Success
        } catch (AWTException e) {
            // Failed
        }
        // Code should never reach here (an unaccelerated blitting
        // strategy should always work)
        throw new InternalError("Could not create a buffer strategy");
    
voidcreateBufferStrategy(int numBuffers, java.awt.BufferCapabilities caps)
Creates a new strategy for multi-buffering on this component with the required buffer capabilities. This is useful, for example, if only accelerated memory or page flipping is desired (as specified by the buffer capabilities).

Each time this method is called, the existing buffer strategy for this component is discarded.

param
numBuffers number of buffers to create
param
caps the required capabilities for creating the buffer strategy; cannot be null
exception
AWTException if the capabilities supplied could not be supported or met; this may happen, for example, if there is not enough accelerated memory currently available, or if page flipping is specified but not possible.
exception
IllegalArgumentException if numBuffers is less than 1, or if caps is null
see
#getBufferStrategy()
since
1.4

        // Check arguments
        if (numBuffers < 1) {
            throw new IllegalArgumentException(
                                               "Number of buffers must be at least 1");
        }
        if (caps == null) {
            throw new IllegalArgumentException("No capabilities specified");
        }
        // Destroy old buffers
        if (bufferStrategy instanceof FlipBufferStrategy) {
            ((FlipBufferStrategy)bufferStrategy).destroyBuffers();
        }
        if (numBuffers == 1) {
            bufferStrategy = new SingleBufferStrategy(caps);
        } else {
            // assert numBuffers > 1;
            if (caps.isPageFlipping()) {
                bufferStrategy = new FlipBufferStrategy(numBuffers, caps);
            } else {
                bufferStrategy = new BltBufferStrategy(numBuffers, caps);
            }
        }
    
intcreateHierarchyEvents(int id, java.awt.Component changed, java.awt.Container changedParent, long changeFlags, boolean enabledOnToolkit)

        switch (id) {
          case HierarchyEvent.HIERARCHY_CHANGED:
              if (hierarchyListener != null ||
                  (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) != 0 ||
                  enabledOnToolkit) {
                  HierarchyEvent e = new HierarchyEvent(this, id, changed,
                                                        changedParent,
                                                        changeFlags);
                  dispatchEvent(e);
                  return 1;
              }
              break;
          case HierarchyEvent.ANCESTOR_MOVED:
          case HierarchyEvent.ANCESTOR_RESIZED:
              if (dbg.on) {
                  dbg.assertion(changeFlags == 0);
              }
              if (hierarchyBoundsListener != null ||
                  (eventMask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) != 0 ||
                  enabledOnToolkit) {
                  HierarchyEvent e = new HierarchyEvent(this, id, changed,
                                                        changedParent);
                  dispatchEvent(e);
                  return 1;
              }
              break;
          default:
              if (dbg.on) {
                  dbg.assertion(false);
              }
              break;
        }
        return 0;
    
public java.awt.ImagecreateImage(java.awt.image.ImageProducer producer)
Creates an image from the specified image producer.

param
producer the image producer
return
the image produced
since
JDK1.0

        ComponentPeer peer = this.peer;
        if ((peer != null) && ! (peer instanceof LightweightPeer)) {
            return peer.createImage(producer);
        }
        return getToolkit().createImage(producer);
    
public java.awt.ImagecreateImage(int width, int height)
Creates an off-screen drawable image to be used for double buffering.

param
width the specified width
param
height the specified height
return
an off-screen drawable image, which can be used for double buffering. The return value may be null if the component is not displayable. This will always happen if GraphicsEnvironment.isHeadless() returns true.
see
#isDisplayable
see
GraphicsEnvironment#isHeadless
since
JDK1.0

        ComponentPeer peer = this.peer;
        if (peer instanceof LightweightPeer) {
            if (parent != null) { return parent.createImage(width, height); }
            else { return null;}
        } else {
            return (peer != null) ? peer.createImage(width, height) : null;
        }
    
public java.awt.image.VolatileImagecreateVolatileImage(int width, int height)
Creates a volatile off-screen drawable image to be used for double buffering.

param
width the specified width.
param
height the specified height.
return
an off-screen drawable image, which can be used for double buffering. The return value may be null if the component is not displayable. This will always happen if GraphicsEnvironment.isHeadless() returns true.
see
java.awt.image.VolatileImage
see
#isDisplayable
see
GraphicsEnvironment#isHeadless
since
1.4

        ComponentPeer peer = this.peer;
        if (peer instanceof LightweightPeer) {
            if (parent != null) { 
                return parent.createVolatileImage(width, height); 
            }
            else { return null;}
        } else {
            return (peer != null) ? 
                peer.createVolatileImage(width, height) : null;
        }
    
public java.awt.image.VolatileImagecreateVolatileImage(int width, int height, java.awt.ImageCapabilities caps)
Creates a volatile off-screen drawable image, with the given capabilities. The contents of this image may be lost at any time due to operating system issues, so the image must be managed via the VolatileImage interface.

param
width the specified width.
param
height the specified height.
param
caps the image capabilities
exception
AWTException if an image with the specified capabilities cannot be created
return
a VolatileImage object, which can be used to manage surface contents loss and capabilities.
see
java.awt.image.VolatileImage
since
1.4

        // REMIND : check caps
        return createVolatileImage(width, height);
    
public voiddeliverEvent(java.awt.Event e)

deprecated
As of JDK version 1.1, replaced by dispatchEvent(AWTEvent e).

        postEvent(e);
    
public voiddisable()

deprecated
As of JDK version 1.1, replaced by setEnabled(boolean).

        if (enabled) {
            KeyboardFocusManager.clearMostRecentFocusOwner(this);
            synchronized (getTreeLock()) {
                enabled = false;
                if (isFocusOwner()) {
                    // Don't clear the global focus owner. If transferFocus
                    // fails, we want the focus to stay on the disabled
                    // Component so that keyboard traversal, et. al. still
                    // makes sense to the user.
                    autoTransferFocus(false);
                }
                ComponentPeer peer = this.peer;
                if (peer != null) {
                    peer.disable();
                    if (visible) {
                        updateCursorImmediately();
                    }
                }
            }
            if (accessibleContext != null) {
                accessibleContext.firePropertyChange(
                                                     AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
                                                     null, AccessibleState.ENABLED);
            }
        }
    
protected final voiddisableEvents(long eventsToDisable)
Disables the events defined by the specified event mask parameter from being delivered to this component.

param
eventsToDisable the event mask defining the event types
see
#enableEvents
since
JDK1.1

        long notifyAncestors = 0;
        synchronized (this) {
            if ((eventsToDisable & AWTEvent.HIERARCHY_EVENT_MASK) != 0 &&
                hierarchyListener == null &&
                (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) != 0) {
                notifyAncestors |= AWTEvent.HIERARCHY_EVENT_MASK;
            }
            if ((eventsToDisable & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK)!=0 &&
                hierarchyBoundsListener == null &&
                (eventMask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) != 0) {
                notifyAncestors |= AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK;
            }
            eventMask &= ~eventsToDisable;
        }
        if (notifyAncestors != 0) {
            synchronized (getTreeLock()) {
                adjustListeningChildrenOnParent(notifyAncestors, -1);
            }
        }
    
public final voiddispatchEvent(java.awt.AWTEvent e)
Dispatches an event to this component or one of its sub components. Calls processEvent before returning for 1.1-style events which have been enabled for the Component.

param
e the event

        dispatchEventImpl(e);
    
voiddispatchEventImpl(java.awt.AWTEvent e)

        int id = e.getID();

        // Check that this component belongs to this app-context
        AppContext compContext = appContext;
        if (compContext != null && !compContext.equals(AppContext.getAppContext())) {
            log.fine("Event " + e + " is being dispatched on the wrong AppContext");
        }

        /*
         * 0. Set timestamp and modifiers of current event.
         */
        EventQueue.setCurrentEventAndMostRecentTime(e);

        /*
         * 1. Pre-dispatchers. Do any necessary retargeting/reordering here
         *    before we notify AWTEventListeners.
         */

        if (e instanceof SunDropTargetEvent) {
            ((SunDropTargetEvent)e).dispatch();
            return;
        }

        if (!e.focusManagerIsDispatching) {
            // Invoke the private focus retargeting method which provides
            // lightweight Component support
            if (e.isPosted) {
                e = KeyboardFocusManager.retargetFocusEvent(e);
                e.isPosted = true;
            }

            // Now, with the event properly targeted to a lightweight
            // descendant if necessary, invoke the public focus retargeting
            // and dispatching function
            if (KeyboardFocusManager.getCurrentKeyboardFocusManager().
                dispatchEvent(e))
            {
                return;
            }
        }
        if (e instanceof FocusEvent && focusLog.isLoggable(Level.FINE)) {
            focusLog.fine("" + e);
        }
        // MouseWheel may need to be retargeted here so that
        // AWTEventListener sees the event go to the correct
        // Component.  If the MouseWheelEvent needs to go to an ancestor,
        // the event is dispatched to the ancestor, and dispatching here
        // stops.
        if (id == MouseEvent.MOUSE_WHEEL && 
            (!eventTypeEnabled(id)) &&
            (peer != null && !peer.handlesWheelScrolling()) &&
            (dispatchMouseWheelToAncestor((MouseWheelEvent)e)))
        {
            return;
        }

        /*
         * 2. Allow the Toolkit to pass this to AWTEventListeners.
         */
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        toolkit.notifyAWTEventListeners(e);


        /*
         * 3. If no one has consumed a key event, allow the
         *    KeyboardFocusManager to process it.
         */
        if (!e.isConsumed()) {
            if (e instanceof java.awt.event.KeyEvent) {
                KeyboardFocusManager.getCurrentKeyboardFocusManager().
                    processKeyEvent(this, (KeyEvent)e);
                if (e.isConsumed()) {
                    return;
                }
            }
        }

        /*
         * 4. Allow input methods to process the event
         */
        if (areInputMethodsEnabled()
            && (
                // We need to pass on InputMethodEvents since some host
                // input method adapters send them through the Java
                // event queue instead of directly to the component,
                // and the input context also handles the Java composition window
                ((e instanceof InputMethodEvent) && !(this instanceof CompositionArea))
                ||
                // Otherwise, we only pass on input and focus events, because
                // a) input methods shouldn't know about semantic or component-level events
                // b) passing on the events takes time
                // c) isConsumed() is always true for semantic events.
                (e instanceof InputEvent) || (e instanceof FocusEvent))) {
            InputContext inputContext = getInputContext();
            if (inputContext != null) {
                inputContext.dispatchEvent(e);
                if (e.isConsumed()) {
                    if (e instanceof FocusEvent && focusLog.isLoggable(Level.FINER)) {
                        focusLog.finer("3579: Skipping " + e);
                    }
                    return;
                }
            }
        }

        /*
         * 5. Pre-process any special events before delivery
         */
        switch(id) {
            // Handling of the PAINT and UPDATE events is now done in the
            // peer's handleEvent() method so the background can be cleared
            // selectively for non-native components on Windows only.
            // - Fred.Ecks@Eng.sun.com, 5-8-98

          case KeyEvent.KEY_PRESSED:
          case KeyEvent.KEY_RELEASED:
              Container p = (Container)((this instanceof Container) ? this : parent);
              if (p != null) {
                  p.preProcessKeyEvent((KeyEvent)e);
                  if (e.isConsumed()) {
                      return;
                  }
              }
              break;

          case WindowEvent.WINDOW_CLOSING:
              if (toolkit instanceof WindowClosingListener) {
                  windowClosingException = ((WindowClosingListener)
                                            toolkit).windowClosingNotify((WindowEvent)e);
                  if (checkWindowClosingException()) {
                      return;
                  }
              }
              break;
                
          default:
              break;
        }

        /*
         * 6. Deliver event for normal processing
         */
        if (newEventsOnly) {
            // Filtering needs to really be moved to happen at a lower
            // level in order to get maximum performance gain;  it is
            // here temporarily to ensure the API spec is honored.
            //
            if (eventEnabled(e)) {
                processEvent(e);
            }
        } else if (id == MouseEvent.MOUSE_WHEEL) {
            // newEventsOnly will be false for a listenerless ScrollPane, but
            // MouseWheelEvents still need to be dispatched to it so scrolling
            // can be done.
            autoProcessMouseWheel((MouseWheelEvent)e);
        } else if (!(e instanceof MouseEvent && !postsOldMouseEvents())) {
            //
            // backward compatibility
            //
            Event olde = e.convertToOld();
            if (olde != null) {
                int key = olde.key;
                int modifiers = olde.modifiers;

                postEvent(olde);
                if (olde.isConsumed()) {
                    e.consume();
                }
                // if target changed key or modifier values, copy them
                // back to original event
                //
                switch(olde.id) {
                  case Event.KEY_PRESS:
                  case Event.KEY_RELEASE:
                  case Event.KEY_ACTION:
                  case Event.KEY_ACTION_RELEASE:
                      if (olde.key != key) {
                          ((KeyEvent)e).setKeyChar(olde.getKeyEventChar());
                      }
                      if (olde.modifiers != modifiers) {
                          ((KeyEvent)e).setModifiers(olde.modifiers);
                      }
                      break;
                  default:
                      break;
                }
            }
        }

        /*
         * 8. Special handling for 4061116 : Hook for browser to close modal
         *    dialogs.
         */
        if (id == WindowEvent.WINDOW_CLOSING && !e.isConsumed()) {
            if (toolkit instanceof WindowClosingListener) {
                windowClosingException =
                    ((WindowClosingListener)toolkit).
                    windowClosingDelivered((WindowEvent)e);
                if (checkWindowClosingException()) {
                    return;
                }
            }
        }
  
        /*
         * 9. Allow the peer to process the event. 
         * Except KeyEvents, they will be processed by peer after 
         * all KeyEventPostProcessors 
         * (see DefaultKeyboardFocusManager.dispatchKeyEvent())
         */
        if (!(e instanceof KeyEvent)) {
            ComponentPeer tpeer = peer;
            if (e instanceof FocusEvent && (tpeer == null || tpeer instanceof LightweightPeer)) {
                // if focus owner is lightweight then its native container 
                // processes event
                Component source = (Component)e.getSource();
                if (source != null) {
                    Container target = source.getNativeContainer();
                    if (target != null) {
                        tpeer = target.getPeer();
                    }
                }
            }            
            if (tpeer != null) {
                tpeer.handleEvent(e);
            }
        }
    
booleandispatchMouseWheelToAncestor(java.awt.event.MouseWheelEvent e)

        int newX, newY;
        newX = e.getX() + getX(); // Coordinates take into account at least
        newY = e.getY() + getY(); // the cursor's position relative to this
                                  // Component (e.getX()), and this Component's
                                  // position relative to its parent.
        MouseWheelEvent newMWE;

        if (dbg.on) {
            dbg.println("Component.dispatchMouseWheelToAncestor");
            dbg.println("orig event src is of " + e.getSource().getClass());
        }

        /* parent field for Window refers to the owning Window.
         * MouseWheelEvents should NOT be propagated into owning Windows
         */
        synchronized (getTreeLock()) {
            Container anc = getParent();
            while (anc != null && !anc.eventEnabled(e)) {
                // fix coordinates to be relative to new event source
                newX += anc.getX();
                newY += anc.getY();

                if (!(anc instanceof Window)) {
                    anc = anc.getParent();
                }
                else {
                    break;
                }
            }

            if (dbg.on) dbg.println("new event src is " + anc.getClass());

            if (anc != null && anc.eventEnabled(e)) {
                // Change event to be from new source, with new x,y
                // For now, just create a new event - yucky

                newMWE = new MouseWheelEvent(anc, // new source
                                             e.getID(),
                                             e.getWhen(),
                                             e.getModifiers(),
                                             newX, // x relative to new source
                                             newY, // y relative to new source
                                             e.getClickCount(),
                                             e.isPopupTrigger(),
                                             e.getScrollType(),
                                             e.getScrollAmount(),
                                             e.getWheelRotation());
                ((AWTEvent)e).copyPrivateDataInto(newMWE);
                anc.dispatchEventImpl(newMWE);
            }
        }
        return true;
    
private voiddoAutoTransfer(boolean clearOnFailure)

        if (clearOnFailure) {
            if (!nextFocusHelper()) {
                KeyboardFocusManager.getCurrentKeyboardFocusManager().
                    clearGlobalFocusOwner();
            }
        } else {
            transferFocus();
        }
    
public voiddoLayout()
Prompts the layout manager to lay out this component. This is usually called when the component (more specifically, container) is validated.

see
#validate
see
LayoutManager

        layout();
    
private voiddoSwingSerialization()
This hack is for Swing serialization. It will invoke the Swing package private method compWriteObjectNotify.


                        
       
        Package swingPackage = Package.getPackage("javax.swing");
        // For Swing serialization to correctly work Swing needs to
        // be notified before Component does it's serialization.  This
        // hack accomodates this.
        //
        // Swing classes MUST be loaded by the bootstrap class loader,
        // otherwise we don't consider them.
        for (Class klass = Component.this.getClass(); klass != null;
                   klass = klass.getSuperclass()) {
            if (klass.getPackage() == swingPackage &&
                      klass.getClassLoader() == null) {
                final Class swingClass = klass;
                // Find the first override of the compWriteObjectNotify method
                Method[] methods = (Method[])AccessController.doPrivileged(
                                                                           new PrivilegedAction() {
                                                                               public Object run() {
                                                                                   return swingClass.getDeclaredMethods();
                                                                               }
                                                                           });
                for (int counter = methods.length - 1; counter >= 0;
                     counter--) {
                    final Method method = methods[counter];
                    if (method.getName().equals("compWriteObjectNotify")){
                        // We found it, use doPrivileged to make it accessible
                        // to use.
                        AccessController.doPrivileged(new PrivilegedAction() {
                                public Object run() {
                                    method.setAccessible(true);
                                    return null;
                                }
                            });
                        // Invoke the method
                        try {
                            method.invoke(this, null);
                        } catch (IllegalAccessException iae) {
                        } catch (InvocationTargetException ite) {
                        }
                        // We're done, bail.
                        return;
                    }
                }
            }
        }
    
public voidenable()

deprecated
As of JDK version 1.1, replaced by setEnabled(boolean).

        if (!enabled) {
            synchronized (getTreeLock()) {
                enabled = true;
                ComponentPeer peer = this.peer;
                if (peer != null) {
                    peer.enable();
                    if (visible) {
                        updateCursorImmediately();
                    }
                }
            }  
            if (accessibleContext != null) {
                accessibleContext.firePropertyChange(
                                                     AccessibleContext.ACCESSIBLE_STATE_PROPERTY, 
                                                     null, AccessibleState.ENABLED);
            }
        }
    
public voidenable(boolean b)

deprecated
As of JDK version 1.1, replaced by setEnabled(boolean).

        if (b) {
            enable();
        } else {
            disable();
        }
    
protected final voidenableEvents(long eventsToEnable)
Enables the events defined by the specified event mask parameter to be delivered to this component.

Event types are automatically enabled when a listener for that event type is added to the component.

This method only needs to be invoked by subclasses of Component which desire to have the specified event types delivered to processEvent regardless of whether or not a listener is registered.

param
eventsToEnable the event mask defining the event types
see
#processEvent
see
#disableEvents
see
AWTEvent
since
JDK1.1

        long notifyAncestors = 0;
        synchronized (this) {
            if ((eventsToEnable & AWTEvent.HIERARCHY_EVENT_MASK) != 0 &&
                hierarchyListener == null &&
                (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) == 0) {
                notifyAncestors |= AWTEvent.HIERARCHY_EVENT_MASK;
            }
            if ((eventsToEnable & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) != 0 &&
                hierarchyBoundsListener == null &&
                (eventMask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) == 0) {
                notifyAncestors |= AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK;
            }
            eventMask |= eventsToEnable;
            newEventsOnly = true;
        }

        // if this is a lightweight component, enable mouse events
        // in the native container.
        if (peer instanceof LightweightPeer) {
            parent.proxyEnableEvents(eventMask);
        }
        if (notifyAncestors != 0) {
            synchronized (getTreeLock()) {
                adjustListeningChildrenOnParent(notifyAncestors, 1);
            }
        }
    
public voidenableInputMethods(boolean enable)
Enables or disables input method support for this component. If input method support is enabled and the component also processes key events, incoming events are offered to the current input method and will only be processed by the component or dispatched to its listeners if the input method does not consume them. By default, input method support is enabled.

param
enable true to enable, false to disable
see
#processKeyEvent
since
1.2

        if (enable) {
            if ((eventMask & AWTEvent.INPUT_METHODS_ENABLED_MASK) != 0)
                return;

            // If this component already has focus, then activate the
            // input method by dispatching a synthesized focus gained
            // event.
            if (isFocusOwner()) {
                InputContext inputContext = getInputContext();
                if (inputContext != null) {
                    FocusEvent focusGainedEvent =
                        new FocusEvent(this, FocusEvent.FOCUS_GAINED);
                    inputContext.dispatchEvent(focusGainedEvent);
                }
            }

            eventMask |= AWTEvent.INPUT_METHODS_ENABLED_MASK;
        } else {
            if ((eventMask & AWTEvent.INPUT_METHODS_ENABLED_MASK) != 0) {
                InputContext inputContext = getInputContext();
                if (inputContext != null) {
                    inputContext.endComposition();
                    inputContext.removeNotify(this);
                }
            }
            eventMask &= ~AWTEvent.INPUT_METHODS_ENABLED_MASK;
        }
    
booleaneventEnabled(java.awt.AWTEvent e)

        return eventTypeEnabled(e.id);
    
booleaneventTypeEnabled(int type)

        switch(type) {
          case ComponentEvent.COMPONENT_MOVED:
          case ComponentEvent.COMPONENT_RESIZED:
          case ComponentEvent.COMPONENT_SHOWN:
          case ComponentEvent.COMPONENT_HIDDEN:
              if ((eventMask & AWTEvent.COMPONENT_EVENT_MASK) != 0 ||
                  componentListener != null) {
                  return true;
              }
              break;
          case FocusEvent.FOCUS_GAINED:
          case FocusEvent.FOCUS_LOST:
              if ((eventMask & AWTEvent.FOCUS_EVENT_MASK) != 0 ||
                  focusListener != null) {
                  return true;
              }
              break;
          case KeyEvent.KEY_PRESSED:
          case KeyEvent.KEY_RELEASED:
          case KeyEvent.KEY_TYPED:
              if ((eventMask & AWTEvent.KEY_EVENT_MASK) != 0 ||
                  keyListener != null) {
                  return true;
              }
              break;
          case MouseEvent.MOUSE_PRESSED:
          case MouseEvent.MOUSE_RELEASED:
          case MouseEvent.MOUSE_ENTERED:
          case MouseEvent.MOUSE_EXITED:
          case MouseEvent.MOUSE_CLICKED:
              if ((eventMask & AWTEvent.MOUSE_EVENT_MASK) != 0 ||
                  mouseListener != null) {
                  return true;
              }
              break;
          case MouseEvent.MOUSE_MOVED:
          case MouseEvent.MOUSE_DRAGGED:
              if ((eventMask & AWTEvent.MOUSE_MOTION_EVENT_MASK) != 0 ||
                  mouseMotionListener != null) {
                  return true;
              }
              break;
          case MouseEvent.MOUSE_WHEEL:
              if ((eventMask & AWTEvent.MOUSE_WHEEL_EVENT_MASK) != 0 ||
                  mouseWheelListener != null) {
                  return true;
              }
              break;
          case InputMethodEvent.INPUT_METHOD_TEXT_CHANGED:
          case InputMethodEvent.CARET_POSITION_CHANGED:
              if ((eventMask & AWTEvent.INPUT_METHOD_EVENT_MASK) != 0 ||
                  inputMethodListener != null) {
                  return true;
              }
              break;
          case HierarchyEvent.HIERARCHY_CHANGED:
              if ((eventMask & AWTEvent.HIERARCHY_EVENT_MASK) != 0 ||
                  hierarchyListener != null) {
                  return true;
              }
              break;
          case HierarchyEvent.ANCESTOR_MOVED:
          case HierarchyEvent.ANCESTOR_RESIZED:
              if ((eventMask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) != 0 ||
                  hierarchyBoundsListener != null) {
                  return true;
              }
              break;
          case ActionEvent.ACTION_PERFORMED:
              if ((eventMask & AWTEvent.ACTION_EVENT_MASK) != 0) {
                  return true;
              }
              break;
          case TextEvent.TEXT_VALUE_CHANGED:
              if ((eventMask & AWTEvent.TEXT_EVENT_MASK) != 0) {
                  return true;
              }
              break;
          case ItemEvent.ITEM_STATE_CHANGED:
              if ((eventMask & AWTEvent.ITEM_EVENT_MASK) != 0) {
                  return true;
              }
              break;
          case AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED:
              if ((eventMask & AWTEvent.ADJUSTMENT_EVENT_MASK) != 0) {
                  return true;
              }
              break;
          default:
              break;
        }
        //
        // Always pass on events defined by external programs.
        //
        if (type > AWTEvent.RESERVED_ID_MAX) {
            return true;
        }
        return false;
    
java.awt.ComponentfindUnderMouseInWindow(java.awt.PointerInfo pi)
Assuming that mouse location is stored in PointerInfo passed to this method, it finds a Component that is in the same Window as this Component and is located under the mouse pointer. If no such Component exists, null is returned. NOTE: this method should be called under the protection of tree lock, as it is done in Component.getMousePosition() and Container.getMousePosition(boolean).

        if (!isShowing()) {
            return null;
        }
        Window win = getContainingWindow();
        if (!Toolkit.getDefaultToolkit().getMouseInfoPeer().isWindowUnderMouse(win)) {
            return null;
        }
        final boolean INCLUDE_DISABLED = true;
        Point relativeToWindow = win.pointRelativeToComponent(pi.getLocation());
        Component inTheSameWindow = win.findComponentAt(relativeToWindow.x,
                                                        relativeToWindow.y,
                                                        INCLUDE_DISABLED);
        return inTheSameWindow;
    
protected voidfirePropertyChange(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)
Support for reporting bound property changes for Object properties. This method can be called when a bound property has changed and it will send the appropriate PropertyChangeEvent to any registered PropertyChangeListeners.

param
propertyName the property whose value has changed
param
oldValue the property's previous value
param
newValue the property's new value

        PropertyChangeSupport changeSupport = this.changeSupport;
        if (changeSupport == null ||
            (oldValue != null && newValue != null && oldValue.equals(newValue))) {
            return;
        }
        changeSupport.firePropertyChange(propertyName, oldValue, newValue);
    
protected voidfirePropertyChange(java.lang.String propertyName, boolean oldValue, boolean newValue)
Support for reporting bound property changes for boolean properties. This method can be called when a bound property has changed and it will send the appropriate PropertyChangeEvent to any registered PropertyChangeListeners.

param
propertyName the property whose value has changed
param
oldValue the property's previous value
param
newValue the property's new value

        PropertyChangeSupport changeSupport = this.changeSupport;
        if (changeSupport == null || oldValue == newValue) {
            return;
        }
        changeSupport.firePropertyChange(propertyName, oldValue, newValue);
    
protected voidfirePropertyChange(java.lang.String propertyName, int oldValue, int newValue)
Support for reporting bound property changes for integer properties. This method can be called when a bound property has changed and it will send the appropriate PropertyChangeEvent to any registered PropertyChangeListeners.

param
propertyName the property whose value has changed
param
oldValue the property's previous value
param
newValue the property's new value

        PropertyChangeSupport changeSupport = this.changeSupport;
        if (changeSupport == null || oldValue == newValue) {
            return;
        }
        changeSupport.firePropertyChange(propertyName, oldValue, newValue);
    
public voidfirePropertyChange(java.lang.String propertyName, byte oldValue, byte newValue)
Reports a bound property change.

param
propertyName the programmatic name of the property that was changed
param
oldValue the old value of the property (as a byte)
param
newValue the new value of the property (as a byte)
see
#firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object)
since
1.5

        if (changeSupport == null || oldValue == newValue) {
            return;
        }
        firePropertyChange(propertyName, new Byte(oldValue), new Byte(newValue));
    
public voidfirePropertyChange(java.lang.String propertyName, char oldValue, char newValue)
Reports a bound property change.

param
propertyName the programmatic name of the property that was changed
param
oldValue the old value of the property (as a char)
param
newValue the new value of the property (as a char)
see
#firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object)
since
1.5

        if (changeSupport == null || oldValue == newValue) {
            return;
        }
        firePropertyChange(propertyName, new Character(oldValue), new Character(newValue));
    
public voidfirePropertyChange(java.lang.String propertyName, short oldValue, short newValue)
Reports a bound property change.

param
propertyName the programmatic name of the property that was changed
param
oldValue the old value of the property (as a short)
param
newValue the old value of the property (as a short)
see
#firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object)
since
1.5

        if (changeSupport == null || oldValue == newValue) {
            return;
        }
        firePropertyChange(propertyName, new Short(oldValue), new Short(newValue));
    
public voidfirePropertyChange(java.lang.String propertyName, long oldValue, long newValue)
Reports a bound property change.

param
propertyName the programmatic name of the property that was changed
param
oldValue the old value of the property (as a long)
param
newValue the new value of the property (as a long)
see
#firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object)
since
1.5

        if (changeSupport == null || oldValue == newValue) {
            return;
        }
        firePropertyChange(propertyName, new Long(oldValue), new Long(newValue));
    
public voidfirePropertyChange(java.lang.String propertyName, float oldValue, float newValue)
Reports a bound property change.

param
propertyName the programmatic name of the property that was changed
param
oldValue the old value of the property (as a float)
param
newValue the new value of the property (as a float)
see
#firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object)
since
1.5

        if (changeSupport == null || oldValue == newValue) {
            return;
        }
        firePropertyChange(propertyName, new Float(oldValue), new Float(newValue));
    
public voidfirePropertyChange(java.lang.String propertyName, double oldValue, double newValue)
Reports a bound property change.

param
propertyName the programmatic name of the property that was changed
param
oldValue the old value of the property (as a double)
param
newValue the new value of the property (as a double)
see
#firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object)
since
1.5

        if (changeSupport == null || oldValue == newValue) {
            return;
        }
        firePropertyChange(propertyName, new Double(oldValue), new Double(newValue));
    
public javax.accessibility.AccessibleContextgetAccessibleContext()
Gets the AccessibleContext associated with this Component. The method implemented by this base class returns null. Classes that extend Component should implement this method to return the AccessibleContext associated with the subclass.

return
the AccessibleContext of this Component


                                                   
       
        return accessibleContext;
    
intgetAccessibleIndexInParent()
Gets the index of this object in its accessible parent. If this object does not have an accessible parent, returns -1.

return
the index of this object in its accessible parent

        synchronized (getTreeLock()) {
            int index = -1;
            Container parent = this.getParent();
            if (parent != null && parent instanceof Accessible) {
                Component ca[] = parent.getComponents();
                for (int i = 0; i < ca.length; i++) {
                    if (ca[i] instanceof Accessible) {
                        index++;
                    }
                    if (this.equals(ca[i])) {
                        return index;
                    }
                }
            }
            return -1;
        }
    
javax.accessibility.AccessibleStateSetgetAccessibleStateSet()
Gets the current state set of this object.

return
an instance of AccessibleStateSet containing the current state set of the object
see
AccessibleState

        synchronized (getTreeLock()) {
            AccessibleStateSet states = new AccessibleStateSet();
            if (this.isEnabled()) {
                states.add(AccessibleState.ENABLED);
            }
            if (this.isFocusTraversable()) {
                states.add(AccessibleState.FOCUSABLE);
            }
            if (this.isVisible()) {
                states.add(AccessibleState.VISIBLE);
            }
            if (this.isShowing()) {
                states.add(AccessibleState.SHOWING);
            }
            if (this.isFocusOwner()) {
                states.add(AccessibleState.FOCUSED);
            }
            if (this instanceof Accessible) {
                AccessibleContext ac = ((Accessible) this).getAccessibleContext();
                if (ac != null) {
                    Accessible ap = ac.getAccessibleParent();
                    if (ap != null) {
                        AccessibleContext pac = ap.getAccessibleContext();
                        if (pac != null) {
                            AccessibleSelection as = pac.getAccessibleSelection();
                            if (as != null) {
                                states.add(AccessibleState.SELECTABLE);
                                int i = ac.getAccessibleIndexInParent();
                                if (i >= 0) {
                                    if (as.isAccessibleChildSelected(i)) {
                                        states.add(AccessibleState.SELECTED);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (this instanceof javax.swing.JComponent) {
                if (((javax.swing.JComponent) this).isOpaque()) {
                    states.add(AccessibleState.OPAQUE);
                }
            }
            return states;
        }
    
public floatgetAlignmentX()
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.

        return CENTER_ALIGNMENT;
    
public floatgetAlignmentY()
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.

        return CENTER_ALIGNMENT;
    
java.awt.ImagegetBackBuffer()

return
the back buffer currently used by this component's BufferStrategy. If there is no BufferStrategy or no back buffer, this method returns null.

        if (bufferStrategy != null) {
            if (bufferStrategy instanceof BltBufferStrategy) {
                BltBufferStrategy bltBS = (BltBufferStrategy)bufferStrategy;
                return bltBS.getBackBuffer();
            } else if (bufferStrategy instanceof FlipBufferStrategy) {
                FlipBufferStrategy flipBS = (FlipBufferStrategy)bufferStrategy;
                return flipBS.getBackBuffer();
            }
        }
        return null;
    
public java.awt.ColorgetBackground()
Gets the background color of this component.

return
this component's background color; if this component does not have a background color, the background color of its parent is returned
see
#setBackground
since
JDK1.0

        Color background = this.background;
        if (background != null) {
            return background;
        }
        Container parent = this.parent;
        return (parent != null) ? parent.getBackground() : null;
    
public java.awt.RectanglegetBounds()
Gets the bounds of this component in the form of a Rectangle object. The bounds specify this component's width, height, and location relative to its parent.

return
a rectangle indicating this component's bounds
see
#setBounds
see
#getLocation
see
#getSize

        return bounds();
    
public java.awt.RectanglegetBounds(java.awt.Rectangle rv)
Stores the bounds of this component into "return value" rv and return rv. If rv is null a new Rectangle is allocated. This version of getBounds is useful if the caller wants to avoid allocating a new Rectangle object on the heap.

param
rv the return value, modified to the components bounds
return
rv

        if (rv == null) {
            return new Rectangle(getX(), getY(), getWidth(), getHeight());
        }
        else {
            rv.setBounds(getX(), getY(), getWidth(), getHeight());
            return rv;
        }
    
intgetBoundsOp()
Should only be used in subclass getBounds to check that part of bounds is actualy changing

     
                         
      
        assert Thread.holdsLock(getTreeLock());         
        return boundsOp;
    
java.awt.image.BufferStrategygetBufferStrategy()

return
the buffer strategy used by this component
see
Window#createBufferStrategy
see
Canvas#createBufferStrategy
since
1.4

        if (bufferStrategy == null) {
            createBufferStrategy(1);
        }
        return bufferStrategy;
    
public java.awt.image.ColorModelgetColorModel()
Gets the instance of ColorModel used to display the component on the output device.

return
the color model used by this component
see
java.awt.image.ColorModel
see
java.awt.peer.ComponentPeer#getColorModel()
see
Toolkit#getColorModel()
since
JDK1.0

        ComponentPeer peer = this.peer;
        if ((peer != null) && ! (peer instanceof LightweightPeer)) {
            return peer.getColorModel();
        } else if (GraphicsEnvironment.isHeadless()) {
            return ColorModel.getRGBdefault();
        } // else
        return getToolkit().getColorModel();
    
public java.awt.ComponentgetComponentAt(int x, int y)
Determines if this component or one of its immediate subcomponents contains the (xy) location, and if so, returns the containing component. This method only looks one level deep. If the point (xy) is inside a subcomponent that itself has subcomponents, it does not go looking down the subcomponent tree.

The locate method of Component simply returns the component itself if the (xy) coordinate location is inside its bounding box, and null otherwise.

param
x the x coordinate
param
y the y coordinate
return
the component or subcomponent that contains the (xy) location; null if the location is outside this component
see
#contains(int, int)
since
JDK1.0

        return locate(x, y);
    
public java.awt.ComponentgetComponentAt(java.awt.Point p)
Returns the component or subcomponent that contains the specified point.

param
p the point
see
java.awt.Component#contains
since
JDK1.1

        return getComponentAt(p.x, p.y);
    
public synchronized java.awt.event.ComponentListener[]getComponentListeners()
Returns an array of all the component listeners registered on this component.

return
all of this comonent's ComponentListeners or an empty array if no component listeners are currently registered
see
#addComponentListener
see
#removeComponentListener
since
1.4

        return (ComponentListener[]) (getListeners(ComponentListener.class));
    
public java.awt.ComponentOrientationgetComponentOrientation()
Retrieves the language-sensitive orientation that is to be used to order the elements or text within this component. LayoutManager and Component subclasses that wish to respect orientation should call this method to get the component's orientation before performing layout or drawing.

see
ComponentOrientation
author
Laura Werner, IBM

        return componentOrientation;
    
java.awt.WindowgetContainingWindow()
Returns the Window ancestor of the component.

return
Window ancestor of the component or component by itself if it is Window; null, if component is not a part of window hierarchy

        return getContainingWindow(this);
    
static java.awt.WindowgetContainingWindow(java.awt.Component comp)
Returns the Window ancestor of the component comp.

return
Window ancestor of the component or component by itself if it is Window; null, if component is not a part of window hierarchy

        while (comp != null && !(comp instanceof Window)) {
            comp = comp.getParent();
        }

        return (Window)comp;
    
public java.awt.CursorgetCursor()
Gets the cursor set in the component. If the component does not have a cursor set, the cursor of its parent is returned. If no cursor is set in the entire hierarchy, Cursor.DEFAULT_CURSOR is returned.

see
#setCursor
since
JDK1.1

        Cursor cursor = this.cursor;
        if (cursor != null) {
            return cursor;
        }
        Container parent = this.parent;
        if (parent != null) {
            return parent.getCursor();
        } else {
            return Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
        }
    
public synchronized java.awt.dnd.DropTargetgetDropTarget()
Gets the DropTarget associated with this Component.

 return dropTarget; 
public java.awt.ContainergetFocusCycleRootAncestor()
Returns the Container which is the focus cycle root of this Component's focus traversal cycle. Each focus traversal cycle has only a single focus cycle root and each Component which is not a Container 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. For such Containers, this method will return the Container's nearest focus-cycle- root ancestor.

return
this Component's nearest focus-cycle-root ancestor
see
Container#isFocusCycleRoot()
since
1.4

        Container rootAncestor = this.parent;
        while (rootAncestor != null && !rootAncestor.isFocusCycleRoot()) {
            rootAncestor = rootAncestor.parent;
        }
        return rootAncestor;
    
public synchronized java.awt.event.FocusListener[]getFocusListeners()
Returns an array of all the focus listeners registered on this component.

return
all of this component's FocusListeners or an empty array if no component listeners are currently registered
see
#addFocusListener
see
#removeFocusListener
since
1.4

        return (FocusListener[]) (getListeners(FocusListener.class));
    
public java.util.SetgetFocusTraversalKeys(int id)
Returns the Set of focus traversal keys for a given traversal operation for this Component. (See setFocusTraversalKeys for a full description of each key.)

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

param
id one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS
return
the Set of AWTKeyStrokes for the specified operation. The Set will be unmodifiable, and may be empty. null will never be returned.
see
#setFocusTraversalKeys
see
KeyboardFocusManager#FORWARD_TRAVERSAL_KEYS
see
KeyboardFocusManager#BACKWARD_TRAVERSAL_KEYS
see
KeyboardFocusManager#UP_CYCLE_TRAVERSAL_KEYS
throws
IllegalArgumentException if id is not one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS
since
1.4

        if (id < 0 || id >= KeyboardFocusManager.TRAVERSAL_KEY_LENGTH - 1) {
            throw new IllegalArgumentException("invalid focus traversal key identifier");
        }
 
        return getFocusTraversalKeys_NoIDCheck(id);
    
public booleangetFocusTraversalKeysEnabled()
Returns whether focus traversal keys are enabled for this Component. Components for which focus traversal keys are disabled receive key events for focus traversal keys. Components for which focus traversal keys are enabled do not see these events; instead, the events are automatically converted to traversal operations.

return
whether focus traversal keys are enabled for this Component
see
#setFocusTraversalKeysEnabled
see
#setFocusTraversalKeys
see
#getFocusTraversalKeys
since
1.4

        return focusTraversalKeysEnabled;
    
final java.util.SetgetFocusTraversalKeys_NoIDCheck(int id)

        // Okay to return Set directly because it is an unmodifiable view
        Set keystrokes = (focusTraversalKeys != null)
            ? focusTraversalKeys[id]
            : null;
        
        if (keystrokes != null) {
            return keystrokes;
        } else {
            Container parent = this.parent;
            if (parent != null) {
                return parent.getFocusTraversalKeys(id);
            } else {
                return KeyboardFocusManager.getCurrentKeyboardFocusManager().
                    getDefaultFocusTraversalKeys(id);
            }
        }
    
public java.awt.FontgetFont()
Gets the font of this component.

return
this component's font; if a font has not been set for this component, the font of its parent is returned
see
#setFont
since
JDK1.0

        return getFont_NoClientCode();
    
public java.awt.FontMetricsgetFontMetrics(java.awt.Font font)
Gets the font metrics for the specified font.

param
font the font for which font metrics is to be obtained
return
the font metrics for font
see
#getFont
see
#getPeer
see
java.awt.peer.ComponentPeer#getFontMetrics(Font)
see
Toolkit#getFontMetrics(Font)
since
JDK1.0

                                                                                   
        
        FontMetrics result = (FontMetrics) metrics.get(font);
        if (result != null) {
            return result;
        }
        // REMIND: PlatformFont flag should be obsolete soon...
        if (sun.font.FontManager.usePlatformFontMetrics()) {
            if (peer != null &&
                !(peer instanceof LightweightPeer)) {
                result = peer.getFontMetrics(font);
                metrics.put(font, result);
                return result;
            }
        }
        if (parent != null) {
            // These are the lines that cost the big dollars.  Calling
            // parent.getGraphics triggers the construcion (at great
            // expense) of a new Graphics object that is then quickly
            // discarded.                                  - Graham
            Graphics g = parent.getGraphics();
            if (g != null) {
                try {
                    result = g.getFontMetrics(font);
                    metrics.put(font, result);
                    return result;
                } finally {
                    g.dispose();
                }
            }
        }

        result = getToolkit().getFontMetrics(font);
        metrics.put(font, result);
        return result;
    
final java.awt.FontgetFont_NoClientCode()

        Font font = this.font;
        if (font != null) {
            return font;
        }
        Container parent = this.parent;
        return (parent != null) ? parent.getFont_NoClientCode() : null;
    
public java.awt.ColorgetForeground()
Gets the foreground color of this component.

return
this component's foreground color; if this component does not have a foreground color, the foreground color of its parent is returned
see
#setForeground
since
JDK1.0
beaninfo
bound: true

        Color foreground = this.foreground;
        if (foreground != null) {
            return foreground;
        }
        Container parent = this.parent;
        return (parent != null) ? parent.getForeground() : null;
    
public java.awt.GraphicsgetGraphics()
Creates a graphics context for this component. This method will return null if this component is currently not displayable.

return
a graphics context for this component, or null if it has none
see
#paint
since
JDK1.0

        if (peer instanceof LightweightPeer) {
            // This is for a lightweight component, need to
            // translate coordinate spaces and clip relative
            // to the parent.
            if (parent == null) return null;
            Graphics g = parent.getGraphics();
            if (g == null) return null;
            if (g instanceof ConstrainableGraphics) {
                ((ConstrainableGraphics) g).constrain(x, y, width, height);
            } else {
                g.translate(x,y);
                g.setClip(0, 0, width, height);
            }
            g.setFont(getFont());
            return g;
        } else {
            ComponentPeer peer = this.peer;
            return (peer != null) ? peer.getGraphics() : null;
        }
    
public java.awt.GraphicsConfigurationgetGraphicsConfiguration()
Gets the GraphicsConfiguration associated with this Component. If the Component has not been assigned a specific GraphicsConfiguration, the GraphicsConfiguration of the Component object's top-level container is returned. If the Component has been created, but not yet added to a Container, this method returns null.

return
the GraphicsConfiguration used by this Component or null
since
1.3

        synchronized(getTreeLock()) {
            if (graphicsConfig != null) {
                return graphicsConfig;
            } else if (getParent() != null) {
                return getParent().getGraphicsConfiguration();
            } else {
                return null;
            }
        }
    
public intgetHeight()
Returns the current height of this component. This method is preferable to writing component.getBounds().heightcomponent.getSize().height because it doesn't cause any heap allocations.

return
the current height of this component
since
1.2

        return height;
    
public synchronized java.awt.event.HierarchyBoundsListener[]getHierarchyBoundsListeners()
Returns an array of all the hierarchy bounds listeners registered on this component.

return
all of this component's HierarchyBoundsListeners or an empty array if no hierarchy bounds listeners are currently registered
see
#addHierarchyBoundsListener
see
#removeHierarchyBoundsListener
since
1.4

        return (HierarchyBoundsListener[])
            (getListeners(HierarchyBoundsListener.class));
    
public synchronized java.awt.event.HierarchyListener[]getHierarchyListeners()
Returns an array of all the hierarchy listeners registered on this component.

return
all of this component's HierarchyListeners or an empty array if no hierarchy listeners are currently registered
see
#addHierarchyListener
see
#removeHierarchyListener
since
1.4

        return (HierarchyListener[])(getListeners(HierarchyListener.class));
    
public booleangetIgnoreRepaint()

return
whether or not paint messages received from the operating system should be ignored.
since
1.4
see
#setIgnoreRepaint

        return ignoreRepaint;
    
public java.awt.im.InputContextgetInputContext()
Gets the input context used by this component for handling the communication with input methods when text is entered in this component. By default, the input context used for the parent component is returned. Components may override this to return a private input context.

return
the input context used by this component; null if no context can be determined
since
1.2

        Container parent = this.parent;
        if (parent == null) {
            return null;
        } else {
            return parent.getInputContext();
        }
    
public synchronized java.awt.event.InputMethodListener[]getInputMethodListeners()
Returns an array of all the input method listeners registered on this component.

return
all of this component's InputMethodListeners or an empty array if no input method listeners are currently registered
see
#addInputMethodListener
see
#removeInputMethodListener
since
1.4

        return (InputMethodListener[]) (getListeners(InputMethodListener.class));
    
public java.awt.im.InputMethodRequestsgetInputMethodRequests()
Gets the input method request handler which supports requests from input methods for this component. A component that supports on-the-spot text input must override this method to return an InputMethodRequests instance. At the same time, it also has to handle input method events.

return
the input method request handler for this component, null by default
see
#addInputMethodListener
since
1.2

        return null;
    
public synchronized java.awt.event.KeyListener[]getKeyListeners()
Returns an array of all the key listeners registered on this component.

return
all of this component's KeyListeners or an empty array if no key listeners are currently registered
see
#addKeyListener
see
#removeKeyListener
since
1.4

        return (KeyListener[]) (getListeners(KeyListener.class));
    
public T[]getListeners(java.lang.Class listenerType)
Returns an array of all the objects currently registered as FooListeners upon this Component. FooListeners 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 Component c for its mouse listeners with the following code:

MouseListener[] mls = (MouseListener[])(c.getListeners(MouseListener.class));
If no such listeners exist, this method returns an empty array.

param
listenerType the type of listeners requested; this parameter should specify an interface that descends from java.util.EventListener
return
an array of all objects registered as FooListeners on this component, or an empty array if no such listeners have been added
exception
ClassCastException if listenerType doesn't specify a class or interface that implements java.util.EventListener
see
#getComponentListeners
see
#getFocusListeners
see
#getHierarchyListeners
see
#getHierarchyBoundsListeners
see
#getKeyListeners
see
#getMouseListeners
see
#getMouseMotionListeners
see
#getMouseWheelListeners
see
#getInputMethodListeners
see
#getPropertyChangeListeners
since
1.3

 
        EventListener l = null; 
        if  (listenerType == ComponentListener.class) { 
            l = componentListener;
        } else if (listenerType == FocusListener.class) {
            l = focusListener;
        } else if (listenerType == HierarchyListener.class) {
            l = hierarchyListener;
        } else if (listenerType == HierarchyBoundsListener.class) {
            l = hierarchyBoundsListener;
        } else if (listenerType == KeyListener.class) {
            l = keyListener;
        } else if (listenerType == MouseListener.class) {
            l = mouseListener;
        } else if (listenerType == MouseMotionListener.class) {
            l = mouseMotionListener; 
        } else if (listenerType == MouseWheelListener.class) {
            l = mouseWheelListener; 
        } else if (listenerType == InputMethodListener.class) {
            l = inputMethodListener; 
        } else if (listenerType == PropertyChangeListener.class) {
            return (T[])getPropertyChangeListeners();
        }
        return AWTEventMulticaster.getListeners(l, listenerType);
    
public java.util.LocalegetLocale()
Gets the locale of this component.

return
this component's locale; if this component does not have a locale, the locale of its parent is returned
see
#setLocale
exception
IllegalComponentStateException if the Component does not have its own locale and has not yet been added to a containment hierarchy such that the locale can be determined from the containing parent
since
JDK1.1

        Locale locale = this.locale;
        if (locale != null) {
            return locale;
        }
        Container parent = this.parent;

        if (parent == null) {
            throw new IllegalComponentStateException("This component must have a parent in order to determine its locale");
        } else {
            return parent.getLocale();
        }
    
public java.awt.PointgetLocation()
Gets the location of this component in the form of a point specifying the component's top-left corner. The location will be relative to the parent's coordinate space.

Due to the asynchronous nature of native event handling, this method can return outdated values (for instance, after several calls of setLocation() in rapid succession). For this reason, the recommended method of obtaining a component's position is within java.awt.event.ComponentListener.componentMoved(), which is called after the operating system has finished moving the component.

return
an instance of Point representing the top-left corner of the component's bounds in the coordinate space of the component's parent
see
#setLocation
see
#getLocationOnScreen
since
JDK1.1

        return location();
    
public java.awt.PointgetLocation(java.awt.Point rv)
Stores the x,y origin of this component into "return value" rv and return rv. If rv is null a new Point is allocated. This version of getLocation is useful if the caller wants to avoid allocating a new Point object on the heap.

param
rv the return value, modified to the components location
return
rv

        if (rv == null) {
            return new Point(getX(), getY());
        }
        else {
            rv.setLocation(getX(), getY());
            return rv;
        }
    
public java.awt.PointgetLocationOnScreen()
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.

return
an instance of Point representing the top-left corner of the component's bounds in the coordinate space of the screen
throws
IllegalComponentStateException if the component is not showing on the screen
see
#setLocation
see
#getLocation

        synchronized (getTreeLock()) {
            return getLocationOnScreen_NoTreeLock();
        }
    
final java.awt.PointgetLocationOnScreen_NoTreeLock()

        
        if (peer != null && isShowing()) {
            if (peer instanceof LightweightPeer) {
                // lightweight component location needs to be translated
                // relative to a native component.
                Container host = getNativeContainer();
                Point pt = host.peer.getLocationOnScreen();
                for(Component c = this; c != host; c = c.getParent()) {
                    pt.x += c.x;
                    pt.y += c.y;
                }
                return pt;
            } else {
                Point pt = peer.getLocationOnScreen();
                return pt;
            }
        } else {
            throw new IllegalComponentStateException("component must be showing on the screen to determine its location");
        }
    
public java.awt.DimensiongetMaximumSize()
Gets the maximum size of this component.

return
a dimension object indicating this component's maximum size
see
#getMinimumSize
see
#getPreferredSize
see
LayoutManager

        if (isMaximumSizeSet()) {
            return new Dimension(maxSize);
        }
        return new Dimension(Short.MAX_VALUE, Short.MAX_VALUE);
    
public java.awt.DimensiongetMinimumSize()
Gets the mininimum size of this component.

return
a dimension object indicating this component's minimum size
see
#getPreferredSize
see
LayoutManager

        return minimumSize();
    
public synchronized java.awt.event.MouseListener[]getMouseListeners()
Returns an array of all the mouse listeners registered on this component.

return
all of this component's MouseListeners or an empty array if no mouse listeners are currently registered
see
#addMouseListener
see
#removeMouseListener
since
1.4

        return (MouseListener[]) (getListeners(MouseListener.class));
    
public synchronized java.awt.event.MouseMotionListener[]getMouseMotionListeners()
Returns an array of all the mouse motion listeners registered on this component.

return
all of this component's MouseMotionListeners or an empty array if no mouse motion listeners are currently registered
see
#addMouseMotionListener
see
#removeMouseMotionListener
since
1.4

        return (MouseMotionListener[]) (getListeners(MouseMotionListener.class));
    
public java.awt.PointgetMousePosition()
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. If the Component is not showing on the screen, this method returns null even if the mouse pointer is above the area where the Component would be displayed. If the Component is partially or fully obscured by other Components or native windows, this method returns a non-null value only if the mouse pointer is located above the unobscured part of the Component.

For Containers it returns a non-null value if the mouse is above the Container itself or above any of its descendants. Use {@link Container#getMousePosition(boolean)} if you need to exclude children.

Sometimes the exact mouse coordinates are not important, and the only thing that matters is whether a specific Component is under the mouse pointer. If the return value of this method is null, mouse pointer is not directly above the Component.

exception
HeadlessException if GraphicsEnvironment.isHeadless() returns true
see
#isShowing
see
Container#getMousePosition
return
mouse coordinates relative to this Component, or null
since
1.5

        if (GraphicsEnvironment.isHeadless()) {
            throw new HeadlessException();
        }

        PointerInfo pi = (PointerInfo)java.security.AccessController.doPrivileged(
                                                                                  new java.security.PrivilegedAction() {
                                                                                      public Object run() {
                                                                                          return MouseInfo.getPointerInfo();
                                                                                      }
                                                                                  }
                                                                                  );

        synchronized (getTreeLock()) {
            Component inTheSameWindow = findUnderMouseInWindow(pi);
            if (!isSameOrAncestorOf(inTheSameWindow, true)) {
                return null;
            }
            return pointRelativeToComponent(pi.getLocation());
        }
    
public synchronized java.awt.event.MouseWheelListener[]getMouseWheelListeners()
Returns an array of all the mouse wheel listeners registered on this component.

return
all of this component's MouseWheelListeners or an empty array if no mouse wheel listeners are currently registered
see
#addMouseWheelListener
see
#removeMouseWheelListener
since
1.4

        return (MouseWheelListener[]) (getListeners(MouseWheelListener.class));
    
public java.lang.StringgetName()
Gets the name of the component.

return
this component's name
see
#setName
since
JDK1.1

        if (name == null && !nameExplicitlySet) {
            synchronized(this) {
                if (name == null && !nameExplicitlySet)
                    name = constructComponentName();
            }
        }
        return name;
    
java.awt.ContainergetNativeContainer()

        Container p = parent;
        while (p != null && p.peer instanceof LightweightPeer) {
            p = p.getParent();
        }
        return p;
    
public java.awt.ContainergetParent()
Gets the parent of this component.

return
the parent container of this component
since
JDK1.0

        return getParent_NoClientCode();
    
final java.awt.ContainergetParent_NoClientCode()

        return parent;
    
public java.awt.peer.ComponentPeergetPeer()

deprecated
As of JDK version 1.1, programs should not directly manipulate peers; replaced by boolean isDisplayable().

        return peer;
    
public java.awt.DimensiongetPreferredSize()
Gets the preferred size of this component.

return
a dimension object indicating this component's preferred size
see
#getMinimumSize
see
LayoutManager

        return preferredSize();
    
public synchronized java.beans.PropertyChangeListener[]getPropertyChangeListeners()
Returns an array of all the property change listeners registered on this component.

return
all of this component's PropertyChangeListeners or an empty array if no property change listeners are currently registered
see
#addPropertyChangeListener
see
#removePropertyChangeListener
see
#getPropertyChangeListeners(java.lang.String)
see
java.beans.PropertyChangeSupport#getPropertyChangeListeners
since
1.4

        if (changeSupport == null) {
            return new PropertyChangeListener[0];
        }
        return changeSupport.getPropertyChangeListeners();
    
public synchronized java.beans.PropertyChangeListener[]getPropertyChangeListeners(java.lang.String propertyName)
Returns an array of all the listeners which have been associated with the named property.

return
all of the PropertyChangeListeners associated with the named property; if no such listeners have been added or if propertyName is null, an empty array is returned
see
#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
see
#removePropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
see
#getPropertyChangeListeners
since
1.4

        if (changeSupport == null) {
            return new PropertyChangeListener[0];
        }
        return changeSupport.getPropertyChangeListeners(propertyName);
    
public java.awt.DimensiongetSize()
Returns the size of this component in the form of a Dimension object. The height field of the Dimension object contains this component's height, and the width field of the Dimension object contains this component's width.

return
a Dimension object that indicates the size of this component
see
#setSize
since
JDK1.1

        return size();
    
public java.awt.DimensiongetSize(java.awt.Dimension rv)
Stores the width/height of this component into "return value" rv and return rv. If rv is null a new Dimension object is allocated. This version of getSize is useful if the caller wants to avoid allocating a new Dimension object on the heap.

param
rv the return value, modified to the components size
return
rv

        if (rv == null) {
            return new Dimension(getWidth(), getHeight());
        }
        else {
            rv.setSize(getWidth(), getHeight());
            return rv;
        }
    
public java.awt.ToolkitgetToolkit()
Gets the toolkit of this component. Note that the frame that contains a component controls which toolkit is used by that component. Therefore if the component is moved from one frame to another, the toolkit it uses may change.

return
the toolkit of this component
since
JDK1.0

        return getToolkitImpl();
    
final java.awt.ToolkitgetToolkitImpl()

        ComponentPeer peer = this.peer;
        if ((peer != null) && ! (peer instanceof LightweightPeer)){
            return peer.getToolkit();
        }
        Container parent = this.parent;
        if (parent != null) {
            return parent.getToolkitImpl();
        }
        return Toolkit.getDefaultToolkit();
    
public final java.lang.ObjectgetTreeLock()
Gets this component's locking object (the object that owns the thread sychronization monitor) for AWT component-tree and layout operations.

return
this component's locking object

        return LOCK;
    
public intgetWidth()
Returns the current width of this component. This method is preferable to writing component.getBounds().width, or component.getSize().width because it doesn't cause any heap allocations.

return
the current width of this component
since
1.2

        return width;
    
public intgetX()
Returns the current x coordinate of the components origin. This method is preferable to writing component.getBounds().x, or component.getLocation().x because it doesn't cause any heap allocations.

return
the current x coordinate of the components origin
since
1.2

        return x;
    
public intgetY()
Returns the current y coordinate of the components origin. This method is preferable to writing component.getBounds().y, or component.getLocation().y because it doesn't cause any heap allocations.

return
the current y coordinate of the components origin
since
1.2

        return y;
    
public booleangotFocus(java.awt.Event evt, java.lang.Object what)

deprecated
As of JDK version 1.1, replaced by processFocusEvent(FocusEvent).

        return false;
    
public booleanhandleEvent(java.awt.Event evt)

deprecated
As of JDK version 1.1 replaced by processEvent(AWTEvent).

        switch (evt.id) {
          case Event.MOUSE_ENTER:
              return mouseEnter(evt, evt.x, evt.y);

          case Event.MOUSE_EXIT:
              return mouseExit(evt, evt.x, evt.y);

          case Event.MOUSE_MOVE:
              return mouseMove(evt, evt.x, evt.y);

          case Event.MOUSE_DOWN:
              return mouseDown(evt, evt.x, evt.y);

          case Event.MOUSE_DRAG:
              return mouseDrag(evt, evt.x, evt.y);

          case Event.MOUSE_UP:
              return mouseUp(evt, evt.x, evt.y);

          case Event.KEY_PRESS:
          case Event.KEY_ACTION:
              return keyDown(evt, evt.key);

          case Event.KEY_RELEASE:
          case Event.KEY_ACTION_RELEASE:
              return keyUp(evt, evt.key);

          case Event.ACTION_EVENT:
              return action(evt, evt.arg);
          case Event.GOT_FOCUS:
              return gotFocus(evt, evt.arg);
          case Event.LOST_FOCUS:
              return lostFocus(evt, evt.arg);
        }
        return false;
    
public booleanhasFocus()
Returns true if this Component is the focus owner. This method is obsolete, and has been replaced by isFocusOwner().

return
true if this Component is the focus owner; false otherwise
since
1.2

        return (KeyboardFocusManager.getCurrentKeyboardFocusManager().
                getFocusOwner() == this);
    
public voidhide()

deprecated
As of JDK version 1.1, replaced by setVisible(boolean).

        isPacked = false;

        if (visible) {
            clearCurrentFocusCycleRootOnHide();
            clearMostRecentFocusOwnerOnHide();
            synchronized (getTreeLock()) {
                visible = false;
                if (containsFocus()) {
                    autoTransferFocus(true);
                }
                ComponentPeer peer = this.peer;
                if (peer != null) {
                    peer.hide();
                    createHierarchyEvents(HierarchyEvent.HIERARCHY_CHANGED,
                                          this, parent,
                                          HierarchyEvent.SHOWING_CHANGED,
                                          Toolkit.enabledOnToolkit(AWTEvent.HIERARCHY_EVENT_MASK));
                    if (peer instanceof LightweightPeer) {
                        repaint();
                    }
                    updateCursorImmediately();
                }
                if (componentListener != null ||
                    (eventMask & AWTEvent.COMPONENT_EVENT_MASK) != 0 ||
                    Toolkit.enabledOnToolkit(AWTEvent.COMPONENT_EVENT_MASK)) {
                    ComponentEvent e = new ComponentEvent(this,
                                                          ComponentEvent.COMPONENT_HIDDEN);
                    Toolkit.getEventQueue().postEvent(e);
                }
            }
            Container parent = this.parent;
            if (parent != null) {
                parent.invalidate();
            }
        }
    
public booleanimageUpdate(java.awt.Image img, int infoflags, int x, int y, int w, int h)
Repaints the component when the image has changed. This imageUpdate method of an ImageObserver is called when more information about an image which had been previously requested using an asynchronous routine such as the drawImage method of Graphics becomes available. See the definition of imageUpdate for more information on this method and its arguments.

The imageUpdate method of Component incrementally draws an image on the component as more of the bits of the image are available.

If the system property awt.image.incrementaldraw is missing or has the value true, the image is incrementally drawn. If the system property has any other value, then the image is not drawn until it has been completely loaded.

Also, if incremental drawing is in effect, the value of the system property awt.image.redrawrate is interpreted as an integer to give the maximum redraw rate, in milliseconds. If the system property is missing or cannot be interpreted as an integer, the redraw rate is once every 100ms.

The interpretation of the x, y, width, and height arguments depends on the value of the infoflags argument.

param
img the image being observed
param
infoflags see imageUpdate for more information
param
x the x coordinate
param
y the y coordinate
param
w the width
param
h the height
return
false if the infoflags indicate that the image is completely loaded; true otherwise.
see
java.awt.image.ImageObserver
see
Graphics#drawImage(Image, int, int, Color, java.awt.image.ImageObserver)
see
Graphics#drawImage(Image, int, int, java.awt.image.ImageObserver)
see
Graphics#drawImage(Image, int, int, int, int, Color, java.awt.image.ImageObserver)
see
Graphics#drawImage(Image, int, int, int, int, java.awt.image.ImageObserver)
see
java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int)
since
JDK1.0

        int rate = -1;
        if ((infoflags & (FRAMEBITS|ALLBITS)) != 0) {
            rate = 0;
        } else if ((infoflags & SOMEBITS) != 0) {
            if (isInc) {
                rate = incRate;
                if (rate < 0) {
                    rate = 0;
                }
            }
        }
        if (rate >= 0) {
            repaint(rate, 0, 0, width, height);
        }
        return (infoflags & (ALLBITS|ABORT)) == 0;
    
private static native voidinitIDs()
Initialize JNI field and method IDs

voidinitializeFocusTraversalKeys()

        focusTraversalKeys = new Set[3];
    
public booleaninside(int x, int y)

deprecated
As of JDK version 1.1, replaced by contains(int, int).

        return (x >= 0) && (x < width) && (y >= 0) && (y < height);
    
public voidinvalidate()
Invalidates this component. This component and all parents above it are marked as needing to be laid out. This method can be called often, so it needs to execute quickly.

see
#validate
see
#doLayout
see
LayoutManager
since
JDK1.0

        synchronized (getTreeLock()) {
            /* Nullify cached layout and size information.
             * For efficiency, propagate invalidate() upwards only if
             * some other component hasn't already done so first.
             */
            valid = false;
            if (!isPreferredSizeSet()) {
                prefSize = null;
            }
            if (!isMinimumSizeSet()) {
                minSize = null;
            }
            if (!isMaximumSizeSet()) {
                maxSize = null;
            }
            if (parent != null && parent.valid) {
                parent.invalidate();
            }
        }
    
public booleanisBackgroundSet()
Returns whether the background color has been explicitly set for this Component. If this method returns false, this Component is inheriting its background color from an ancestor.

return
true if the background color has been explicitly set for this Component; false otherwise.
since
1.4

        return (background != null);
    
public booleanisCursorSet()
Returns whether the cursor has been explicitly set for this Component. If this method returns false, this Component is inheriting its cursor from an ancestor.

return
true if the cursor has been explicitly set for this Component; false otherwise.
since
1.4

        return (cursor != null);
    
public booleanisDisplayable()
Determines whether this component is displayable. A component is displayable when it is connected to a native screen resource.

A component is made displayable either when it is added to a displayable containment hierarchy or when its containment hierarchy is made displayable. A containment hierarchy is made displayable when its ancestor window is either packed or made visible.

A component is made undisplayable either when it is removed from a displayable containment hierarchy or when its containment hierarchy is made undisplayable. A containment hierarchy is made undisplayable when its ancestor window is disposed.

return
true if the component is displayable, false otherwise
see
Container#add(Component)
see
Window#pack
see
Window#show
see
Container#remove(Component)
see
Window#dispose
since
1.2

        return getPeer() != null;
    
public booleanisDoubleBuffered()
Returns true if this component is painted to an offscreen image ("buffer") that's copied to the screen later. Component subclasses that support double buffering should override this method to return true if double buffering is enabled.

return
false by default

        return false;
    
public booleanisEnabled()
Determines whether this component is enabled. An enabled component can respond to user input and generate events. Components are enabled initially by default. A component may be enabled or disabled by calling its setEnabled method.

return
true if the component is enabled, false otherwise
see
#setEnabled
since
JDK1.0

        return isEnabledImpl();
    
final booleanisEnabledImpl()

        return enabled;
    
public booleanisFocusCycleRoot(java.awt.Container container)
Returns whether the specified Container is the focus cycle root of this Component's focus traversal cycle. Each focus traversal cycle has only a single focus cycle root and each Component which is not a Container belongs to only a single focus traversal cycle.

param
container the Container to be tested
return
true if the specified Container is a focus-cycle- root of this Component; false otherwise
see
Container#isFocusCycleRoot()
since
1.4

        Container rootAncestor = getFocusCycleRootAncestor();
        return (rootAncestor == container);
    
public booleanisFocusOwner()
Returns true if this Component is the focus owner.

return
true if this Component is the focus owner; false otherwise
since
1.4

        return hasFocus();
    
public booleanisFocusTraversable()
Returns whether this Component can become the focus owner.

return
true if this Component is focusable; false otherwise
see
#setFocusable
since
JDK1.1
deprecated
As of 1.4, replaced by isFocusable().

        if (isFocusTraversableOverridden == FOCUS_TRAVERSABLE_UNKNOWN) {
            isFocusTraversableOverridden = FOCUS_TRAVERSABLE_DEFAULT;
        }
        return focusable;
    
final booleanisFocusTraversableOverridden()

        return (isFocusTraversableOverridden != FOCUS_TRAVERSABLE_DEFAULT);
    
public booleanisFocusable()
Returns whether this Component can be focused.

return
true if this Component is focusable; false otherwise.
see
#setFocusable
since
1.4

        return isFocusTraversable();
    
public booleanisFontSet()
Returns whether the font has been explicitly set for this Component. If this method returns false, this Component is inheriting its font from an ancestor.

return
true if the font has been explicitly set for this Component; false otherwise.
since
1.4

        return (font != null);
    
public booleanisForegroundSet()
Returns whether the foreground color has been explicitly set for this Component. If this method returns false, this Component is inheriting its foreground color from an ancestor.

return
true if the foreground color has been explicitly set for this Component; false otherwise.
since
1.4

        return (foreground != null);
    
public booleanisLightweight()
A lightweight component doesn't have a native toolkit peer. Subclasses of Component and Container, other than the ones defined in this package like Button or Scrollbar, are lightweight. All of the Swing components are lightweights.

This method will always return false if this component is not displayable because it is impossible to determine the weight of an undisplayable component.

return
true if this component has a lightweight peer; false if it has a native peer or no peer
see
#isDisplayable
since
1.2

        return getPeer() instanceof LightweightPeer;
    
public booleanisMaximumSizeSet()
Returns true if the maximum size has been set to a non-null value otherwise returns false.

return
true if maximumSize is non-null, false otherwise
since
1.5

 
        return maxSizeSet;
    
public booleanisMinimumSizeSet()
Returns whether or not setMinimumSize has been invoked with a non-null value.

return
true if setMinimumSize has been invoked with a non-null value.
since
1.5

        return minSizeSet;
    
public booleanisOpaque()
Returns true if this component is completely opaque, returns false by default.

An opaque component paints every pixel within its rectangular region. A non-opaque component paints only some of its pixels, allowing the pixels underneath it to "show through". A component that does not fully paint its pixels therefore provides a degree of transparency. Only lightweight components can be transparent.

Subclasses that guarantee to always completely paint their contents should override this method and return true. All of the "heavyweight" AWT components are opaque.

return
true if this component is completely opaque
see
#isLightweight
since
1.2

        if (getPeer() == null) {
            return false;
        }
        else {
            return !isLightweight();
        }
    
public booleanisPreferredSizeSet()
Returns true if the preferred size has been set to a non-null value otherwise returns false.

return
true if setPreferredSize has been invoked with a non-null value.
since
1.5

 
        return prefSizeSet;
    
booleanisRecursivelyVisible()
Determines whether this component will be displayed on the screen if it's displayable.

return
true if the component and all of its ancestors are visible, false otherwise

        return visible && (parent == null || parent.isRecursivelyVisible());
    
booleanisSameOrAncestorOf(java.awt.Component comp, boolean allowChildren)
Overridden in Container. Must be called under TreeLock.

        return comp == this;
    
public booleanisShowing()
Determines whether this component is showing on screen. This means that the component must be visible, and it must be in a container that is visible and showing.

return
true if the component is showing, false otherwise
see
#setVisible
since
JDK1.0

        if (visible && (peer != null)) {
            Container parent = this.parent;
            return (parent == null) || parent.isShowing();
        }
        return false;
    
public booleanisValid()
Determines whether this component is valid. A component is valid when it is correctly sized and positioned within its parent container and all its children are also valid. In order to account for peers' size requirements, components are invalidated before they are first shown on the screen. By the time the parent container is fully realized, all its components will be valid.

return
true if the component is valid, false otherwise
see
#validate
see
#invalidate
since
JDK1.0

        return (peer != null) && valid;
    
public booleanisVisible()
Determines whether this component should be visible when its parent is visible. Components are initially visible, with the exception of top level components such as Frame objects.

return
true if the component is visible, false otherwise
see
#setVisible
since
JDK1.0

        return visible;
    
public booleankeyDown(java.awt.Event evt, int key)

deprecated
As of JDK version 1.1, replaced by processKeyEvent(KeyEvent).

        return false;
    
public booleankeyUp(java.awt.Event evt, int key)

deprecated
As of JDK version 1.1, replaced by processKeyEvent(KeyEvent).

        return false;
    
public voidlayout()

deprecated
As of JDK version 1.1, replaced by doLayout().

    
voidlightweightPaint(java.awt.Graphics g)
Simulates the peer callbacks into java.awt for painting of lightweight Components.

param
g the graphics context to use for painting
see
#paintAll

        paint(g);
    
voidlightweightPrint(java.awt.Graphics g)
Simulates the peer callbacks into java.awt for printing of lightweight Components.

param
g the graphics context to use for printing
see
#printAll

        print(g);
    
public voidlist()
Prints a listing of this component to the standard system output stream System.out.

see
java.lang.System#out
since
JDK1.0

        list(System.out, 0);
    
public voidlist(java.io.PrintStream out)
Prints a listing of this component to the specified output stream.

param
out a print stream
since
JDK1.0

        list(out, 0);
    
public voidlist(java.io.PrintStream out, int indent)
Prints out a list, starting at the specified indentation, to the specified print stream.

param
out a print stream
param
indent number of spaces to indent
see
java.io.PrintStream#println(java.lang.Object)
since
JDK1.0

        for (int i = 0 ; i < indent ; i++) {
            out.print(" ");
        }
        out.println(this);
    
public voidlist(java.io.PrintWriter out)
Prints a listing to the specified print writer.

param
out the print writer to print to
since
JDK1.1

        list(out, 0);
    
public voidlist(java.io.PrintWriter out, int indent)
Prints out a list, starting at the specified indentation, to the specified print writer.

param
out the print writer to print to
param
indent the number of spaces to indent
see
java.io.PrintStream#println(java.lang.Object)
since
JDK1.1

        for (int i = 0 ; i < indent ; i++) {
            out.print(" ");
        }
        out.println(this);
    
public java.awt.Componentlocate(int x, int y)

deprecated
As of JDK version 1.1, replaced by getComponentAt(int, int).

        return contains(x, y) ? this : null;
    
public java.awt.Pointlocation()

deprecated
As of JDK version 1.1, replaced by getLocation().

        return new Point(x, y);
    
public booleanlostFocus(java.awt.Event evt, java.lang.Object what)

deprecated
As of JDK version 1.1, replaced by processFocusEvent(FocusEvent).

        return false;
    
public java.awt.DimensionminimumSize()

deprecated
As of JDK version 1.1, replaced by getMinimumSize().

        /* Avoid grabbing the lock if a reasonable cached size value
         * is available.
         */
        Dimension dim = minSize;
        if (dim == null || !(isMinimumSizeSet() || isValid())) {
            synchronized (getTreeLock()) {
                minSize = (peer != null) ?
                    peer.minimumSize() :
                    size();
                dim = minSize;
            }
        }
        return new Dimension(dim);
    
public booleanmouseDown(java.awt.Event evt, int x, int y)

deprecated
As of JDK version 1.1, replaced by processMouseEvent(MouseEvent).

        return false;
    
public booleanmouseDrag(java.awt.Event evt, int x, int y)

deprecated
As of JDK version 1.1, replaced by processMouseMotionEvent(MouseEvent).

        return false;
    
public booleanmouseEnter(java.awt.Event evt, int x, int y)

deprecated
As of JDK version 1.1, replaced by processMouseEvent(MouseEvent).

        return false;
    
public booleanmouseExit(java.awt.Event evt, int x, int y)

deprecated
As of JDK version 1.1, replaced by processMouseEvent(MouseEvent).

        return false;
    
public booleanmouseMove(java.awt.Event evt, int x, int y)

deprecated
As of JDK version 1.1, replaced by processMouseMotionEvent(MouseEvent).

        return false;
    
public booleanmouseUp(java.awt.Event evt, int x, int y)

deprecated
As of JDK version 1.1, replaced by processMouseEvent(MouseEvent).

        return false;
    
public voidmove(int x, int y)

deprecated
As of JDK version 1.1, replaced by setLocation(int, int).

        synchronized(getTreeLock()) {
            setBoundsOp(ComponentPeer.SET_LOCATION);            
            setBounds(x, y, width, height);
        }
    
public voidnextFocus()

deprecated
As of JDK version 1.1, replaced by transferFocus().

        nextFocusHelper();
    
booleannextFocusHelper()

        Container rootAncestor = getFocusCycleRootAncestor();
        Component comp = this;
        while (rootAncestor != null && 
               !(rootAncestor.isShowing() && 
                 rootAncestor.isFocusable() && 
                 rootAncestor.isEnabled())) 
        {
            comp = rootAncestor;
            rootAncestor = comp.getFocusCycleRootAncestor();
        }
        if (rootAncestor != null) {
            FocusTraversalPolicy policy =
                rootAncestor.getFocusTraversalPolicy();
            Component toFocus = policy.getComponentAfter(rootAncestor, comp);
            if (toFocus == null) {
                toFocus = policy.getDefaultComponent(rootAncestor);
            }
            if (toFocus != null) {
                if (focusLog.isLoggable(Level.FINER)) focusLog.finer("Next component " + toFocus);
                boolean res = toFocus.requestFocus(false);
                if (focusLog.isLoggable(Level.FINER)) focusLog.finer("Request focus returned " + res);
                return res;
            }
        }
        return false;
    
private voidnotifyNewBounds(boolean resized, boolean moved)

        if (componentListener != null 
            || (eventMask & AWTEvent.COMPONENT_EVENT_MASK) != 0 
            || Toolkit.enabledOnToolkit(AWTEvent.COMPONENT_EVENT_MASK)) 
        {
            if (resized) {
                ComponentEvent e = new ComponentEvent(this,
                                                      ComponentEvent.COMPONENT_RESIZED);
                Toolkit.getEventQueue().postEvent(e);
            }
            if (moved) {
                ComponentEvent e = new ComponentEvent(this,
                                                      ComponentEvent.COMPONENT_MOVED);
                Toolkit.getEventQueue().postEvent(e);
            }
        } else 
            // Swing optimization. JComponent extends Container
            if (this instanceof Container && ((Container)this).ncomponents > 0) {
                boolean enabledOnToolkit = 
                    Toolkit.enabledOnToolkit(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
                // Container.dispatchEventImpl will create
                // HierarchyEvents
                if (resized) {             
                    ((Container)this).createChildHierarchyEvents(
                                                                 HierarchyEvent.ANCESTOR_RESIZED, 0, enabledOnToolkit);
                }
                if (moved) {
                    ((Container)this).createChildHierarchyEvents(
                                                                 HierarchyEvent.ANCESTOR_MOVED, 0, enabledOnToolkit);
                }
            }
    
intnumListening(long mask)

        if (dbg.on) {
            // One mask or the other, but not neither or both.
            dbg.assertion(mask == AWTEvent.HIERARCHY_EVENT_MASK ||
                          mask == AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
        }
        if ((mask == AWTEvent.HIERARCHY_EVENT_MASK &&
             (hierarchyListener != null ||
              (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) != 0)) ||
            (mask == AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK &&
             (hierarchyBoundsListener != null ||
              (eventMask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) != 0))) {
            return 1;
        } else {
            return 0;
        }
    
public voidpaint(java.awt.Graphics g)
Paints this component.

This method is called when the contents of the component should be painted; such as when the component is first being shown or is damaged and in need of repair. The clip rectangle in the Graphics parameter is set to the area which needs to be painted. Subclasses of Component that override this method need not call super.paint(g).

For performance reasons, Components with zero width or height aren't considered to need painting when they are first shown, and also aren't considered to need repair.

Note: For more information on the paint mechanisms utilitized by AWT and Swing, including information on how to write the most efficient painting code, see Painting in AWT and Swing.

param
g the graphics context to use for painting
see
#update
since
JDK1.0

    
public voidpaintAll(java.awt.Graphics g)
Paints this component and all of its subcomponents.

The origin of the graphics context, its (00) coordinate point, is the top-left corner of this component. The clipping region of the graphics context is the bounding rectangle of this component.

param
g the graphics context to use for painting
see
#paint
since
JDK1.0

        if (isShowing()) {
            GraphicsCallback.PeerPaintCallback.getInstance().
                runOneComponent(this, new Rectangle(0, 0, width, height),
                                g, g.getClip(),
                                GraphicsCallback.LIGHTWEIGHTS |
                                GraphicsCallback.HEAVYWEIGHTS);
        }
    
voidpaintHeavyweightComponents(java.awt.Graphics g)
Paints all the heavyweight subcomponents.

    
protected java.lang.StringparamString()
Returns a string representing the state of this component. 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.

return
a string representation of this component's state
since
JDK1.0

        String thisName = getName();
        String str = (thisName != null? thisName : "") + "," + x + "," + y + "," + width + "x" + height;
        if (!valid) {
            str += ",invalid";
        }
        if (!visible) {
            str += ",hidden";
        }
        if (!enabled) {
            str += ",disabled";
        }
        return str;
    
java.awt.PointpointRelativeToComponent(java.awt.Point absolute)
Translates absolute coordinates into coordinates in the coordinate space of this component.

        Point compCoords = getLocationOnScreen();
        return new Point(absolute.x - compCoords.x,
                         absolute.y - compCoords.y);
    
public booleanpostEvent(java.awt.Event e)

deprecated
As of JDK version 1.1, replaced by dispatchEvent(AWTEvent).

        ComponentPeer peer = this.peer;

        if (handleEvent(e)) {
            e.consume();
            return true;
        }

        Component parent = this.parent;
        int eventx = e.x;
        int eventy = e.y;
        if (parent != null) {
            e.translate(x, y);
            if (parent.postEvent(e)) {
                e.consume();
                return true;
            }
            // restore coords
            e.x = eventx;
            e.y = eventy;
        }
        return false;
    
booleanpostsOldMouseEvents()

        return false;
    
public java.awt.DimensionpreferredSize()

deprecated
As of JDK version 1.1, replaced by getPreferredSize().

        /* Avoid grabbing the lock if a reasonable cached size value
         * is available.
         */
        Dimension dim = prefSize;
        if (dim == null || !(isPreferredSizeSet() || isValid())) {
            synchronized (getTreeLock()) {
                prefSize = (peer != null) ?
                    peer.preferredSize() :
                    getMinimumSize();
                dim = prefSize;
            }
        }
        return new Dimension(dim);
    
public booleanprepareImage(java.awt.Image image, java.awt.image.ImageObserver observer)
Prepares an image for rendering on this component. The image data is downloaded asynchronously in another thread and the appropriate screen representation of the image is generated.

param
image the Image for which to prepare a screen representation
param
observer the ImageObserver object to be notified as the image is being prepared
return
true if the image has already been fully prepared; false otherwise
since
JDK1.0

        return prepareImage(image, -1, -1, observer);
    
public booleanprepareImage(java.awt.Image image, int width, int height, java.awt.image.ImageObserver observer)
Prepares an image for rendering on this component at the specified width and height.

The image data is downloaded asynchronously in another thread, and an appropriately scaled screen representation of the image is generated.

param
image the instance of Image for which to prepare a screen representation
param
width the width of the desired screen representation
param
height the height of the desired screen representation
param
observer the ImageObserver object to be notified as the image is being prepared
return
true if the image has already been fully prepared; false otherwise
see
java.awt.image.ImageObserver
since
JDK1.0

        ComponentPeer peer = this.peer;
        if (peer instanceof LightweightPeer) {
            return (parent != null) 
                ? parent.prepareImage(image, width, height, observer)
                : getToolkit().prepareImage(image, width, height, observer);
        } else {
            return (peer != null)
                ? peer.prepareImage(image, width, height, observer)
                : getToolkit().prepareImage(image, width, height, observer);
        }
    
public voidprint(java.awt.Graphics g)
Prints this component. Applications should override this method for components that must do special processing before being printed or should be printed differently than they are painted.

The default implementation of this method calls the paint method.

The origin of the graphics context, its (00) coordinate point, is the top-left corner of this component. The clipping region of the graphics context is the bounding rectangle of this component.

param
g the graphics context to use for printing
see
#paint(Graphics)
since
JDK1.0

        paint(g);
    
public voidprintAll(java.awt.Graphics g)
Prints this component and all of its subcomponents.

The origin of the graphics context, its (00) coordinate point, is the top-left corner of this component. The clipping region of the graphics context is the bounding rectangle of this component.

param
g the graphics context to use for printing
see
#print(Graphics)
since
JDK1.0

        if (isShowing()) {
            GraphicsCallback.PeerPrintCallback.getInstance().
                runOneComponent(this, new Rectangle(0, 0, width, height),
                                g, g.getClip(),
                                GraphicsCallback.LIGHTWEIGHTS |
                                GraphicsCallback.HEAVYWEIGHTS);
        }
    
voidprintHeavyweightComponents(java.awt.Graphics g)
Prints all the heavyweight subcomponents.

    
protected voidprocessComponentEvent(java.awt.event.ComponentEvent e)
Processes component events occurring on this component by dispatching them to any registered ComponentListener objects.

This method is not called unless component events are enabled for this component. Component events are enabled when one of the following occurs:

  • A ComponentListener object is registered via addComponentListener.
  • Component events are enabled via enableEvents.

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

param
e the component event
see
java.awt.event.ComponentEvent
see
java.awt.event.ComponentListener
see
#addComponentListener
see
#enableEvents
since
JDK1.1

        ComponentListener listener = componentListener;
        if (listener != null) {
            int id = e.getID();
            switch(id) {
              case ComponentEvent.COMPONENT_RESIZED:
                  listener.componentResized(e);
                  break;
              case ComponentEvent.COMPONENT_MOVED:
                  listener.componentMoved(e);
                  break;
              case ComponentEvent.COMPONENT_SHOWN:
                  listener.componentShown(e);
                  break;
              case ComponentEvent.COMPONENT_HIDDEN:
                  listener.componentHidden(e);
                  break;
            }
        }
    
protected voidprocessEvent(java.awt.AWTEvent e)
Processes events occurring on this component. By default this method calls the appropriate process<event type>Event method for the given class of event.

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

param
e the event
see
#processComponentEvent
see
#processFocusEvent
see
#processKeyEvent
see
#processMouseEvent
see
#processMouseMotionEvent
see
#processInputMethodEvent
see
#processHierarchyEvent
see
#processMouseWheelEvent
since
JDK1.1

        if (e instanceof FocusEvent) {
            processFocusEvent((FocusEvent)e);

        } else if (e instanceof MouseEvent) {
            switch(e.getID()) {
              case MouseEvent.MOUSE_PRESSED:
              case MouseEvent.MOUSE_RELEASED:
              case MouseEvent.MOUSE_CLICKED:
              case MouseEvent.MOUSE_ENTERED:
              case MouseEvent.MOUSE_EXITED:
                  processMouseEvent((MouseEvent)e);
                  break;
              case MouseEvent.MOUSE_MOVED:
              case MouseEvent.MOUSE_DRAGGED:
                  processMouseMotionEvent((MouseEvent)e);
                  break;
              case MouseEvent.MOUSE_WHEEL:
                  processMouseWheelEvent((MouseWheelEvent)e);
                  break;
            }

        } else if (e instanceof KeyEvent) {
            processKeyEvent((KeyEvent)e);

        } else if (e instanceof ComponentEvent) {
            processComponentEvent((ComponentEvent)e);
        } else if (e instanceof InputMethodEvent) {
            processInputMethodEvent((InputMethodEvent)e);
        } else if (e instanceof HierarchyEvent) {
            switch (e.getID()) {
              case HierarchyEvent.HIERARCHY_CHANGED:
                  processHierarchyEvent((HierarchyEvent)e);
                  break;
              case HierarchyEvent.ANCESTOR_MOVED:
              case HierarchyEvent.ANCESTOR_RESIZED:
                  processHierarchyBoundsEvent((HierarchyEvent)e);
                  break;
            }
        }
    
protected voidprocessFocusEvent(java.awt.event.FocusEvent e)
Processes focus events occurring on this component by dispatching them to any registered FocusListener objects.

This method is not called unless focus events are enabled for this component. Focus events are enabled when one of the following occurs:

  • A FocusListener object is registered via addFocusListener.
  • Focus events are enabled via enableEvents.

If focus events are enabled for a Component, the current KeyboardFocusManager determines whether or not a focus event should be dispatched to registered FocusListener objects. If the events are to be dispatched, the KeyboardFocusManager calls the Component's dispatchEvent method, which results in a call to the Component's processFocusEvent method.

If focus events are enabled for a Component, calling the Component's dispatchEvent method with a FocusEvent as the argument will result in a call to the Component's processFocusEvent method regardless of the current KeyboardFocusManager.

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

param
e the focus event
see
java.awt.event.FocusEvent
see
java.awt.event.FocusListener
see
java.awt.KeyboardFocusManager
see
#addFocusListener
see
#enableEvents
see
#dispatchEvent
since
JDK1.1

        FocusListener listener = focusListener;
        if (listener != null) {
            int id = e.getID();
            switch(id) {
              case FocusEvent.FOCUS_GAINED:
                  listener.focusGained(e);
                  break;
              case FocusEvent.FOCUS_LOST:
                  listener.focusLost(e);
                  break;
            }
        }
    
protected voidprocessHierarchyBoundsEvent(java.awt.event.HierarchyEvent e)
Processes hierarchy bounds events occurring on this component by dispatching them to any registered HierarchyBoundsListener objects.

This method is not called unless hierarchy bounds events are enabled for this component. Hierarchy bounds events are enabled when one of the following occurs:

  • An HierarchyBoundsListener object is registered via addHierarchyBoundsListener.
  • Hierarchy bounds events are enabled via enableEvents.

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

param
e the hierarchy event
see
java.awt.event.HierarchyEvent
see
java.awt.event.HierarchyBoundsListener
see
#addHierarchyBoundsListener
see
#enableEvents
since
1.3

        HierarchyBoundsListener listener = hierarchyBoundsListener;
        if (listener != null) {
            int id = e.getID();
            switch (id) {
              case HierarchyEvent.ANCESTOR_MOVED:
                  listener.ancestorMoved(e);
                  break;
              case HierarchyEvent.ANCESTOR_RESIZED:
                  listener.ancestorResized(e);
                  break;
            }
        }
    
protected voidprocessHierarchyEvent(java.awt.event.HierarchyEvent e)
Processes hierarchy events occurring on this component by dispatching them to any registered HierarchyListener objects.

This method is not called unless hierarchy events are enabled for this component. Hierarchy events are enabled when one of the following occurs:

  • An HierarchyListener object is registered via addHierarchyListener.
  • Hierarchy events are enabled via enableEvents.

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

param
e the hierarchy event
see
java.awt.event.HierarchyEvent
see
java.awt.event.HierarchyListener
see
#addHierarchyListener
see
#enableEvents
since
1.3

        HierarchyListener listener = hierarchyListener;
        if (listener != null) {
            int id = e.getID();
            switch (id) {
              case HierarchyEvent.HIERARCHY_CHANGED:
                  listener.hierarchyChanged(e);
                  break;
            }
        }
    
protected voidprocessInputMethodEvent(java.awt.event.InputMethodEvent e)
Processes input method events occurring on this component by dispatching them to any registered InputMethodListener objects.

This method is not called unless input method events are enabled for this component. Input method events are enabled when one of the following occurs:

  • An InputMethodListener object is registered via addInputMethodListener.
  • Input method events are enabled via enableEvents.

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

param
e the input method event
see
java.awt.event.InputMethodEvent
see
java.awt.event.InputMethodListener
see
#addInputMethodListener
see
#enableEvents
since
1.2

        InputMethodListener listener = inputMethodListener;
        if (listener != null) {
            int id = e.getID();
            switch (id) {
              case InputMethodEvent.INPUT_METHOD_TEXT_CHANGED:
                  listener.inputMethodTextChanged(e);
                  break;
              case InputMethodEvent.CARET_POSITION_CHANGED:
                  listener.caretPositionChanged(e);
                  break;
            }
        }
    
protected voidprocessKeyEvent(java.awt.event.KeyEvent e)
Processes key events occurring on this component by dispatching them to any registered KeyListener objects.

This method is not called unless key events are enabled for this component. Key events are enabled when one of the following occurs:

  • A KeyListener object is registered via addKeyListener.
  • Key events are enabled via enableEvents.

If key events are enabled for a Component, the current KeyboardFocusManager determines whether or not a key event should be dispatched to registered KeyListener objects. The DefaultKeyboardFocusManager will not dispatch key events to a Component that is not the focus owner or is not showing.

As of J2SE 1.4, KeyEvents are redirected to the focus owner. Please see the Focus Specification for further information.

Calling a Component's dispatchEvent method with a KeyEvent as the argument will result in a call to the Component's processKeyEvent method regardless of the current KeyboardFocusManager as long as the component is showing, focused, and enabled, and key events are enabled on it.

If the event parameter is null the behavior is unspecified and may result in an exception.

param
e the key event
see
java.awt.event.KeyEvent
see
java.awt.event.KeyListener
see
java.awt.KeyboardFocusManager
see
java.awt.DefaultKeyboardFocusManager
see
#processEvent
see
#dispatchEvent
see
#addKeyListener
see
#enableEvents
see
#isShowing
since
JDK1.1

        KeyListener listener = keyListener;
        if (listener != null) {
            int id = e.getID();
            switch(id) {
              case KeyEvent.KEY_TYPED:
                  listener.keyTyped(e);
                  break;
              case KeyEvent.KEY_PRESSED:
                  listener.keyPressed(e);
                  break;
              case KeyEvent.KEY_RELEASED:
                  listener.keyReleased(e);
                  break;
            }
        }
    
protected voidprocessMouseEvent(java.awt.event.MouseEvent e)
Processes mouse events occurring on this component by dispatching them to any registered MouseListener objects.

This method is not called unless mouse events are enabled for this component. Mouse events are enabled when one of the following occurs:

  • A MouseListener object is registered via addMouseListener.
  • Mouse events are enabled via enableEvents.

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

param
e the mouse event
see
java.awt.event.MouseEvent
see
java.awt.event.MouseListener
see
#addMouseListener
see
#enableEvents
since
JDK1.1

        MouseListener listener = mouseListener;
        if (listener != null) {
            int id = e.getID();
            switch(id) {
              case MouseEvent.MOUSE_PRESSED:
                  listener.mousePressed(e);
                  break;
              case MouseEvent.MOUSE_RELEASED:
                  listener.mouseReleased(e);
                  break;
              case MouseEvent.MOUSE_CLICKED:
                  listener.mouseClicked(e);
                  break;
              case MouseEvent.MOUSE_EXITED:
                  listener.mouseExited(e);
                  break;
              case MouseEvent.MOUSE_ENTERED:
                  listener.mouseEntered(e);
                  break;
            }
        }
    
protected voidprocessMouseMotionEvent(java.awt.event.MouseEvent e)
Processes mouse motion events occurring on this component by dispatching them to any registered MouseMotionListener objects.

This method is not called unless mouse motion events are enabled for this component. Mouse motion events are enabled when one of the following occurs:

  • A MouseMotionListener object is registered via addMouseMotionListener.
  • Mouse motion events are enabled via enableEvents.

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

param
e the mouse motion event
see
java.awt.event.MouseEvent
see
java.awt.event.MouseMotionListener
see
#addMouseMotionListener
see
#enableEvents
since
JDK1.1

        MouseMotionListener listener = mouseMotionListener;
        if (listener != null) {
            int id = e.getID();
            switch(id) {
              case MouseEvent.MOUSE_MOVED:
                  listener.mouseMoved(e);
                  break;
              case MouseEvent.MOUSE_DRAGGED:
                  listener.mouseDragged(e);
                  break;
            }
        }
    
protected voidprocessMouseWheelEvent(java.awt.event.MouseWheelEvent e)
Processes mouse wheel events occurring on this component by dispatching them to any registered MouseWheelListener objects.

This method is not called unless mouse wheel events are enabled for this component. Mouse wheel events are enabled when one of the following occurs:

  • A MouseWheelListener object is registered via addMouseWheelListener.
  • Mouse wheel events are enabled via enableEvents.

For information on how mouse wheel events are dispatched, see the class description for {@link MouseWheelEvent}.

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

param
e the mouse wheel event
see
java.awt.event.MouseWheelEvent
see
java.awt.event.MouseWheelListener
see
#addMouseWheelListener
see
#enableEvents
since
1.4

        MouseWheelListener listener = mouseWheelListener;
        if (listener != null) {
            int id = e.getID();
            switch(id) {
              case MouseEvent.MOUSE_WHEEL:
                  listener.mouseWheelMoved(e);
                  break;
            }
        }
    
private voidreadObject(java.io.ObjectInputStream s)
Reads the ObjectInputStream and if it isn't null adds a listener to receive a variety of events fired by the component. Unrecognized keys or values will be ignored.

param
s the ObjectInputStream to read
see
#writeObject(ObjectOutputStream)

        s.defaultReadObject();

        privateKey = new Object();
        appContext = AppContext.getAppContext();

        if (componentSerializedDataVersion < 4) {
            // These fields are non-transient and rely on default
            // serialization. However, the default values are insufficient,
            // so we need to set them explicitly for object data streams prior
            // to 1.4.
            focusable = true;
            isFocusTraversableOverridden = FOCUS_TRAVERSABLE_UNKNOWN;
            initializeFocusTraversalKeys();
            focusTraversalKeysEnabled = true;
        }

        Object keyOrNull;
        while(null != (keyOrNull = s.readObject())) {
            String key = ((String)keyOrNull).intern();

            if (componentListenerK == key)
                addComponentListener((ComponentListener)(s.readObject()));

            else if (focusListenerK == key)
                addFocusListener((FocusListener)(s.readObject()));

            else if (keyListenerK == key)
                addKeyListener((KeyListener)(s.readObject()));

            else if (mouseListenerK == key)
                addMouseListener((MouseListener)(s.readObject()));

            else if (mouseMotionListenerK == key)
                addMouseMotionListener((MouseMotionListener)(s.readObject()));

            else if (inputMethodListenerK == key)
                addInputMethodListener((InputMethodListener)(s.readObject()));

            else // skip value for unrecognized key
                s.readObject();

        }
        
        // Read the component's orientation if it's present
        Object orient = null;

        try {
            orient = s.readObject();
        } catch (java.io.OptionalDataException e) {
            // JDK 1.1 instances will not have this optional data.
            // e.eof will be true to indicate that there is no more
            // data available for this object.
            // If e.eof is not true, throw the exception as it
            // might have been caused by reasons unrelated to 
            // componentOrientation.

            if (!e.eof)  {
                throw (e);
            }
        }

        if (orient != null) {
            componentOrientation = (ComponentOrientation)orient;
        } else {
            componentOrientation = ComponentOrientation.UNKNOWN;
        }

        try {
            while(null != (keyOrNull = s.readObject())) {
                String key = ((String)keyOrNull).intern();

                if (hierarchyListenerK == key) {
                    addHierarchyListener((HierarchyListener)(s.readObject()));
                }
                else if (hierarchyBoundsListenerK == key) {
                    addHierarchyBoundsListener((HierarchyBoundsListener)
                                               (s.readObject()));
                }
                else {
                    // skip value for unrecognized key
                    s.readObject();
                }
            }
        } catch (java.io.OptionalDataException e) {
            // JDK 1.1/1.2 instances will not have this optional data.
            // e.eof will be true to indicate that there is no more
            // data available for this object.
            // If e.eof is not true, throw the exception as it
            // might have been caused by reasons unrelated to 
            // hierarchy and hierarchyBounds listeners.

            if (!e.eof)  {
                throw (e);
            }
        }

        try {
            while (null != (keyOrNull = s.readObject())) {
                String key = ((String)keyOrNull).intern();

                if (mouseWheelListenerK == key) {
                    addMouseWheelListener((MouseWheelListener)(s.readObject()));
                }
                else {
                    // skip value for unrecognized key
                    s.readObject();
                }
            }
        } catch (java.io.OptionalDataException e) {
            // pre-1.3 instances will not have this optional data.
            // e.eof will be true to indicate that there is no more
            // data available for this object.
            // If e.eof is not true, throw the exception as it
            // might have been caused by reasons unrelated to 
            // mouse wheel listeners

            if (!e.eof)  {
                throw (e);
            }
        }

        if (popups != null) {
            int npopups = popups.size();
            for (int i = 0 ; i < npopups ; i++) {
                PopupMenu popup = (PopupMenu)popups.elementAt(i);
                popup.parent = this;
            }
        }
    
public synchronized voidremove(java.awt.MenuComponent popup)
Removes the specified popup menu from the component.

param
popup the popup menu to be removed
see
#add(PopupMenu)
since
JDK1.1

        if (popups != null) {
            int index = popups.indexOf(popup);
            if (index >= 0) {
                PopupMenu pmenu = (PopupMenu)popup;
                if (pmenu.peer != null) {
                    pmenu.removeNotify();
                }
                pmenu.parent = null;
                popups.removeElementAt(index);
                if (popups.size() == 0) {
                    popups = null;
                }
            }
        }
    
public synchronized voidremoveComponentListener(java.awt.event.ComponentListener l)
Removes the specified component listener so that it no longer receives component events from this component. This method performs no function, nor does it throw an exception, if the listener specified by the argument was not previously added to this component. If listener l is null, no exception is thrown and no action is performed.

param
l the component listener
see
java.awt.event.ComponentEvent
see
java.awt.event.ComponentListener
see
#addComponentListener
see
#getComponentListeners
since
JDK1.1

        if (l == null) {
            return;
        }
        componentListener = AWTEventMulticaster.remove(componentListener, l);
    
public synchronized voidremoveFocusListener(java.awt.event.FocusListener l)
Removes the specified focus listener so that it no longer receives focus events from this component. This method performs no function, nor does it throw an exception, if the listener specified by the argument was not previously added to this component. If listener l is null, no exception is thrown and no action is performed.

param
l the focus listener
see
java.awt.event.FocusEvent
see
java.awt.event.FocusListener
see
#addFocusListener
see
#getFocusListeners
since
JDK1.1

        if (l == null) {
            return;
        }
        focusListener = AWTEventMulticaster.remove(focusListener, l);
    
public voidremoveHierarchyBoundsListener(java.awt.event.HierarchyBoundsListener l)
Removes the specified hierarchy bounds listener so that it no longer receives hierarchy bounds events from this component. This method performs no function, nor does it throw an exception, if the listener specified by the argument was not previously added to this component. If listener l is null, no exception is thrown and no action is performed.

param
l the hierarchy bounds listener
see
java.awt.event.HierarchyEvent
see
java.awt.event.HierarchyBoundsListener
see
#addHierarchyBoundsListener
see
#getHierarchyBoundsListeners
since
1.3

        if (l == null) {
            return;
        }
        boolean notifyAncestors;
        synchronized (this) {
            notifyAncestors =
                (hierarchyBoundsListener != null &&
                 (eventMask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) == 0);
            hierarchyBoundsListener =
                AWTEventMulticaster.remove(hierarchyBoundsListener, l);
            notifyAncestors = (notifyAncestors &&
                               hierarchyBoundsListener == null);
        }
        if (notifyAncestors) {
            synchronized (getTreeLock()) {
                adjustListeningChildrenOnParent(
                                                AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK, -1);
            }
        }
    
public voidremoveHierarchyListener(java.awt.event.HierarchyListener l)
Removes the specified hierarchy listener so that it no longer receives hierarchy changed events from this component. This method performs no function, nor does it throw an exception, if the listener specified by the argument was not previously added to this component. If listener l is null, no exception is thrown and no action is performed.

param
l the hierarchy listener
see
java.awt.event.HierarchyEvent
see
java.awt.event.HierarchyListener
see
#addHierarchyListener
see
#getHierarchyListeners
since
1.3

        if (l == null) {
            return;
        }
        boolean notifyAncestors;
        synchronized (this) {
            notifyAncestors =
                (hierarchyListener != null &&
                 (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) == 0);
            hierarchyListener =
                AWTEventMulticaster.remove(hierarchyListener, l);
            notifyAncestors = (notifyAncestors && hierarchyListener == null);
        }
        if (notifyAncestors) {
            synchronized (getTreeLock()) {
                adjustListeningChildrenOnParent(AWTEvent.HIERARCHY_EVENT_MASK,
                                                -1);
            }
        }
    
public synchronized voidremoveInputMethodListener(java.awt.event.InputMethodListener l)
Removes the specified input method listener so that it no longer receives input method events from this component. This method performs no function, nor does it throw an exception, if the listener specified by the argument was not previously added to this component. If listener l is null, no exception is thrown and no action is performed.

param
l the input method listener
see
java.awt.event.InputMethodEvent
see
java.awt.event.InputMethodListener
see
#addInputMethodListener
see
#getInputMethodListeners
since
1.2

        if (l == null) {
            return;
        }
        inputMethodListener = AWTEventMulticaster.remove(inputMethodListener, l);
    
public synchronized voidremoveKeyListener(java.awt.event.KeyListener l)
Removes the specified key listener so that it no longer receives key events from this component. This method performs no function, nor does it throw an exception, if the listener specified by the argument was not previously added to this component. If listener l is null, no exception is thrown and no action is performed.

param
l the key listener
see
java.awt.event.KeyEvent
see
java.awt.event.KeyListener
see
#addKeyListener
see
#getKeyListeners
since
JDK1.1

        if (l == null) {
            return;
        }
        keyListener = AWTEventMulticaster.remove(keyListener, l);
    
public synchronized voidremoveMouseListener(java.awt.event.MouseListener l)
Removes the specified mouse listener so that it no longer receives mouse events from this component. This method performs no function, nor does it throw an exception, if the listener specified by the argument was not previously added to this component. If listener l is null, no exception is thrown and no action is performed.

param
l the mouse listener
see
java.awt.event.MouseEvent
see
java.awt.event.MouseListener
see
#addMouseListener
see
#getMouseListeners
since
JDK1.1

        if (l == null) {
            return;
        }
        mouseListener = AWTEventMulticaster.remove(mouseListener, l);
    
public synchronized voidremoveMouseMotionListener(java.awt.event.MouseMotionListener l)
Removes the specified mouse motion listener so that it no longer receives mouse motion events from this component. This method performs no function, nor does it throw an exception, if the listener specified by the argument was not previously added to this component. If listener l is null, no exception is thrown and no action is performed.

param
l the mouse motion listener
see
java.awt.event.MouseEvent
see
java.awt.event.MouseMotionListener
see
#addMouseMotionListener
see
#getMouseMotionListeners
since
JDK1.1

        if (l == null) {
            return;
        }
        mouseMotionListener = AWTEventMulticaster.remove(mouseMotionListener, l);
    
public synchronized voidremoveMouseWheelListener(java.awt.event.MouseWheelListener l)
Removes the specified mouse wheel listener so that it no longer receives mouse wheel events from this component. This method performs no function, nor does it throw an exception, if the listener specified by the argument was not previously added to this component. If l is null, no exception is thrown and no action is performed.

param
l the mouse wheel listener.
see
java.awt.event.MouseWheelEvent
see
java.awt.event.MouseWheelListener
see
#addMouseWheelListener
see
#getMouseWheelListeners
since
1.4

        if (l == null) {
            return;
        }
        mouseWheelListener = AWTEventMulticaster.remove(mouseWheelListener, l);
    
public voidremoveNotify()
Makes this Component undisplayable by destroying it native screen resource.

This method is called by the toolkit internally and should not be called directly by programs. Code overriding this method should call super.removeNotify as the first line of the overriding method.

see
#isDisplayable
see
#addNotify
since
JDK1.0

        KeyboardFocusManager.clearMostRecentFocusOwner(this);
        if (KeyboardFocusManager.getCurrentKeyboardFocusManager().
            getPermanentFocusOwner() == this) 
        {
            KeyboardFocusManager.getCurrentKeyboardFocusManager().
                setGlobalPermanentFocusOwner(null);
        }

        synchronized (getTreeLock()) {
            if (isFocusOwner() && !nextFocusHelper()) {
                KeyboardFocusManager.getCurrentKeyboardFocusManager().
                    clearGlobalFocusOwner();
            }

            int npopups = (popups != null? popups.size() : 0);
            for (int i = 0 ; i < npopups ; i++) {
                PopupMenu popup = (PopupMenu)popups.elementAt(i);
                popup.removeNotify();
            }
            // If there is any input context for this component, notify
            // that this component is being removed. (This has to be done
            // before hiding peer.)
            if ((eventMask & AWTEvent.INPUT_METHODS_ENABLED_MASK) != 0) {
                InputContext inputContext = getInputContext();
                if (inputContext != null) {
                    inputContext.removeNotify(this);
                }
            }

            ComponentPeer p = peer;
            if (p != null) {

                if (bufferStrategy instanceof FlipBufferStrategy) {
                    ((FlipBufferStrategy)bufferStrategy).destroyBuffers();
                }

                if (dropTarget != null) dropTarget.removeNotify(peer);

                // Hide peer first to stop system events such as cursor moves.
                if (visible) {
                    p.hide();
                }

                peer = null; // Stop peer updates.
                peerFont = null;

                Toolkit.getEventQueue().removeSourceEvents(this, false);
                KeyboardFocusManager.getCurrentKeyboardFocusManager().
                    discardKeyEvents(this);

                p.dispose();
            }

            if (hierarchyListener != null ||
                (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) != 0 ||
                Toolkit.enabledOnToolkit(AWTEvent.HIERARCHY_EVENT_MASK)) {
                HierarchyEvent e =
                    new HierarchyEvent(this, HierarchyEvent.HIERARCHY_CHANGED,
                                       this, parent,
                                       HierarchyEvent.DISPLAYABILITY_CHANGED |
                                       ((isRecursivelyVisible())
                                        ? HierarchyEvent.SHOWING_CHANGED
                                        : 0));
                dispatchEvent(e);
            }
        }
    
public synchronized voidremovePropertyChangeListener(java.beans.PropertyChangeListener listener)
Removes a PropertyChangeListener from the listener list. This method should be used to remove PropertyChangeListeners that were registered for all bound properties of this class.

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

param
listener the PropertyChangeListener to be removed
see
#addPropertyChangeListener
see
#getPropertyChangeListeners
see
#removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)

        if (listener == null || changeSupport == null) {
            return;
        }
        changeSupport.removePropertyChangeListener(listener);
    
public synchronized voidremovePropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
Removes a PropertyChangeListener from the listener list for a specific property. This method should be used to remove PropertyChangeListeners that were registered for a specific bound property.

If propertyName or listener is null, no exception is thrown and no action is taken.

param
propertyName a valid property name
param
listener the PropertyChangeListener to be removed
see
#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
see
#getPropertyChangeListeners(java.lang.String)
see
#removePropertyChangeListener(java.beans.PropertyChangeListener)

        if (listener == null || changeSupport == null) {
            return;
        }
        changeSupport.removePropertyChangeListener(propertyName, listener);
    
public voidrepaint()
Repaints this component.

If this component is a lightweight component, this method causes a call to this component's paint method as soon as possible. Otherwise, this method causes a call to this component's update method as soon as possible.

Note: For more information on the paint mechanisms utilitized by AWT and Swing, including information on how to write the most efficient painting code, see Painting in AWT and Swing.

see
#update(Graphics)
since
JDK1.0

        repaint(0, 0, 0, width, height);
    
public voidrepaint(long tm)
Repaints the component. If this component is a lightweight component, this results in a call to paint within tm milliseconds.

Note: For more information on the paint mechanisms utilitized by AWT and Swing, including information on how to write the most efficient painting code, see Painting in AWT and Swing.

param
tm maximum time in milliseconds before update
see
#paint
see
#update(Graphics)
since
JDK1.0

        repaint(tm, 0, 0, width, height);
    
public voidrepaint(int x, int y, int width, int height)
Repaints the specified rectangle of this component.

If this component is a lightweight component, this method causes a call to this component's paint method as soon as possible. Otherwise, this method causes a call to this component's update method as soon as possible.

Note: For more information on the paint mechanisms utilitized by AWT and Swing, including information on how to write the most efficient painting code, see Painting in AWT and Swing.

param
x the x coordinate
param
y the y coordinate
param
width the width
param
height the height
see
#update(Graphics)
since
JDK1.0

        repaint(0, x, y, width, height);
    
public voidrepaint(long tm, int x, int y, int width, int height)
Repaints the specified rectangle of this component within tm milliseconds.

If this component is a lightweight component, this method causes a call to this component's paint method. Otherwise, this method causes a call to this component's update method.

Note: For more information on the paint mechanisms utilitized by AWT and Swing, including information on how to write the most efficient painting code, see Painting in AWT and Swing.

param
tm maximum time in milliseconds before update
param
x the x coordinate
param
y the y coordinate
param
width the width
param
height the height
see
#update(Graphics)
since
JDK1.0

        if (this.peer instanceof LightweightPeer) {
            // Needs to be translated to parent coordinates since
            // a parent native container provides the actual repaint
            // services.  Additionally, the request is restricted to
            // the bounds of the component.
            if (parent != null) {
                int px = this.x + ((x < 0) ? 0 : x);
                int py = this.y + ((y < 0) ? 0 : y);
                int pwidth = (width > this.width) ? this.width : width;
                int pheight = (height > this.height) ? this.height : height;
                parent.repaint(tm, px, py, pwidth, pheight);
            }
        } else {
            if (isVisible() && (this.peer != null) &&
                (width > 0) && (height > 0)) {
                PaintEvent e = new PaintEvent(this, PaintEvent.UPDATE,
                                              new Rectangle(x, y, width, height));
                Toolkit.getEventQueue().postEvent(e);           
            }
        }
    
private voidrepaintParentIfNeeded(int oldX, int oldY, int oldWidth, int oldHeight)

        if (parent != null && peer instanceof LightweightPeer && isShowing()) {
            // Have the parent redraw the area this component occupied.
            parent.repaint(oldX, oldY, oldWidth, oldHeight);                    
            // Have the parent redraw the area this component *now* occupies.
            repaint();
        }
    
public voidrequestFocus()
Requests that this Component get the input focus, and that this Component's top-level ancestor become the focused Window. This component must be displayable, visible, and focusable for the request to be granted. Every effort will be made to honor the request; however, in some cases it may be impossible to do so. Developers must never assume that this Component is the focus owner until this Component receives a FOCUS_GAINED event. If this request is denied because this Component's top-level Window cannot become the focused Window, the request will be remembered and will be granted when the Window is later focused by the user.

This method cannot be used to set the focus owner to no Component at all. Use KeyboardFocusManager.clearGlobalFocusOwner() instead.

Because the focus behavior of this method is platform-dependent, developers are strongly encouraged to use requestFocusInWindow when possible.

see
#requestFocusInWindow
see
java.awt.event.FocusEvent
see
#addFocusListener
see
#isFocusable
see
#isDisplayable
see
KeyboardFocusManager#clearGlobalFocusOwner
since
JDK1.0

        requestFocusHelper(false, true);
    
protected booleanrequestFocus(boolean temporary)
Requests that this Component get the input focus, and that this Component's top-level ancestor become the focused Window. This component must be displayable, visible, and focusable for the request to be granted. Every effort will be made to honor the request; however, in some cases it may be impossible to do so. Developers must never assume that this component is the focus owner until this component receives a FOCUS_GAINED event. If this request is denied because this component's top-level window cannot become the focused window, the request will be remembered and will be granted when the window is later focused by the user.

This method returns a boolean value. If false is returned, the request is guaranteed to fail. If true is returned, the request will succeed unless it is vetoed, or an extraordinary event, such as disposal of the component's peer, occurs before the request can be granted by the native windowing system. Again, while a return value of true indicates that the request is likely to succeed, developers must never assume that this component is the focus owner until this component receives a FOCUS_GAINED event.

This method cannot be used to set the focus owner to no component at all. Use KeyboardFocusManager.clearGlobalFocusOwner instead.

Because the focus behavior of this method is platform-dependent, developers are strongly encouraged to use requestFocusInWindow when possible.

Every effort will be made to ensure that FocusEvents generated as a result of this request will have the specified temporary value. However, because specifying an arbitrary temporary state may not be implementable on all native windowing systems, correct behavior for this method can be guaranteed only for lightweight Components. This method is not intended for general use, but exists instead as a hook for lightweight component libraries, such as Swing.

param
temporary true if the focus change is temporary, such as when the window loses the focus; for more information on temporary focus changes see the Focus Specification
return
false if the focus change request is guaranteed to fail; true if it is likely to succeed
see
java.awt.event.FocusEvent
see
#addFocusListener
see
#isFocusable
see
#isDisplayable
see
KeyboardFocusManager#clearGlobalFocusOwner
since
1.4

        return requestFocusHelper(temporary, true);
    
final booleanrequestFocusHelper(boolean temporary, boolean focusedWindowChangeAllowed)

        if (isFocusable() && isVisible()) {
            ComponentPeer peer = this.peer;
            if (peer != null) {
                boolean recursivelyInvisible = false;
                Component window = this;
                while (!(window instanceof Window)) {
                    if (!window.isVisible()) {
                        recursivelyInvisible = true;
                    }
                    window = window.parent;
                }
                if (window == null || !((Window)window).isFocusableWindow()) {
                    focusLog.finest("FAIL 1");
                    return false;
                }

                // Update most-recent map
                KeyboardFocusManager.setMostRecentFocusOwner(this);
                
                if (recursivelyInvisible) {
                    focusLog.finest("FAIL 1.5");
                    return false;
                }

                Component heavyweight = (peer instanceof LightweightPeer)
                    ? getNativeContainer() : this;
                if (heavyweight == null || !heavyweight.isVisible()) {
                    focusLog.finest("FAIL 2");
                    return false;
                }
                peer = heavyweight.peer;
                if (peer == null) {
                    focusLog.finest("FAIL 3");
                    return false;
                }

                // Focus this Component
                long time = EventQueue.getMostRecentEventTime();
                boolean success = peer.requestFocus
                    (this, temporary, focusedWindowChangeAllowed, time);
                if (!success) {
                    KeyboardFocusManager.getCurrentKeyboardFocusManager
                        (appContext).dequeueKeyEvents(time, this);
                    focusLog.finest("FAIL 4");
                } else {
                    if (focusLog.isLoggable(Level.FINEST)) focusLog.finest("Pass for " + this);
                }
                return success;
            }
        }
        focusLog.finest("FAIL 5");
        return false;
    
public booleanrequestFocusInWindow()
Requests that this Component get the input focus, if this Component's top-level ancestor is already the focused Window. This component must be displayable, visible, and focusable for the request to be granted. Every effort will be made to honor the request; however, in some cases it may be impossible to do so. Developers must never assume that this Component is the focus owner until this Component receives a FOCUS_GAINED event.

This method returns a boolean value. If false is returned, the request is guaranteed to fail. If true is returned, the request will succeed unless it is vetoed, or an extraordinary event, such as disposal of the Component's peer, occurs before the request can be granted by the native windowing system. Again, while a return value of true indicates that the request is likely to succeed, developers must never assume that this Component is the focus owner until this Component receives a FOCUS_GAINED event.

This method cannot be used to set the focus owner to no Component at all. Use KeyboardFocusManager.clearGlobalFocusOwner() instead.

The focus behavior of this method can be implemented uniformly across platforms, and thus developers are strongly encouraged to use this method over requestFocus when possible. Code which relies on requestFocus may exhibit different focus behavior on different platforms.

return
false if the focus change request is guaranteed to fail; true if it is likely to succeed
see
#requestFocus
see
java.awt.event.FocusEvent
see
#addFocusListener
see
#isFocusable
see
#isDisplayable
see
KeyboardFocusManager#clearGlobalFocusOwner
since
1.4

        return requestFocusHelper(false, false);
    
protected booleanrequestFocusInWindow(boolean temporary)
Requests that this Component get the input focus, if this Component's top-level ancestor is already the focused Window. This component must be displayable, visible, and focusable for the request to be granted. Every effort will be made to honor the request; however, in some cases it may be impossible to do so. Developers must never assume that this component is the focus owner until this component receives a FOCUS_GAINED event.

This method returns a boolean value. If false is returned, the request is guaranteed to fail. If true is returned, the request will succeed unless it is vetoed, or an extraordinary event, such as disposal of the component's peer, occurs before the request can be granted by the native windowing system. Again, while a return value of true indicates that the request is likely to succeed, developers must never assume that this component is the focus owner until this component receives a FOCUS_GAINED event.

This method cannot be used to set the focus owner to no component at all. Use KeyboardFocusManager.clearGlobalFocusOwner instead.

The focus behavior of this method can be implemented uniformly across platforms, and thus developers are strongly encouraged to use this method over requestFocus when possible. Code which relies on requestFocus may exhibit different focus behavior on different platforms.

Every effort will be made to ensure that FocusEvents generated as a result of this request will have the specified temporary value. However, because specifying an arbitrary temporary state may not be implementable on all native windowing systems, correct behavior for this method can be guaranteed only for lightweight components. This method is not intended for general use, but exists instead as a hook for lightweight component libraries, such as Swing.

param
temporary true if the focus change is temporary, such as when the window loses the focus; for more information on temporary focus changes see the Focus Specification
return
false if the focus change request is guaranteed to fail; true if it is likely to succeed
see
#requestFocus
see
java.awt.event.FocusEvent
see
#addFocusListener
see
#isFocusable
see
#isDisplayable
see
KeyboardFocusManager#clearGlobalFocusOwner
since
1.4

        return requestFocusHelper(temporary, false);
    
voidresetGC()
Resets this Component's GraphicsConfiguration back to a default value. For most componenets, this is null. Called from the Toolkit thread, so NO CLIENT CODE.

        synchronized(getTreeLock()) {
            graphicsConfig = null;
        }
    
public voidreshape(int x, int y, int width, int height)

deprecated
As of JDK version 1.1, replaced by setBounds(int, int, int, int).

        synchronized (getTreeLock()) {
            try {
                setBoundsOp(ComponentPeer.SET_BOUNDS);
                boolean resized = (this.width != width) || (this.height != height);
                boolean moved = (this.x != x) || (this.y != y);
                if (!resized && !moved) {
                    return;
                }
                int oldX = this.x;
                int oldY = this.y;
                int oldWidth = this.width; 
                int oldHeight = this.height;
                this.x = x; 
                this.y = y;
                this.width = width; 
                this.height = height;

                if (resized) {
                    isPacked = false;
                }
                
                if (peer != null) {
                    // LightwightPeer is an empty stub so can skip peer.reshape
                    if (!(peer instanceof LightweightPeer)) {                        
                        reshapeNativePeer(x, y, width, height, getBoundsOp());
                        // Check peer actualy changed coordinates
                        resized = (oldWidth != this.width) || (oldHeight != this.height);
                        moved = (oldX != this.x) || (oldY != this.y);
                    }
                
                    if (resized) {
                        invalidate();
                    }
                    if (parent != null && parent.valid) {
                        parent.invalidate();
                    }
                }
                notifyNewBounds(resized, moved);
                repaintParentIfNeeded(oldX, oldY, oldWidth, oldHeight);
            } finally {
                setBoundsOp(ComponentPeer.RESET_OPERATION);
            }
        }
    
private voidreshapeNativePeer(int x, int y, int width, int height, int op)

        // native peer might be offset by more than direct
        // parent since parent might be lightweight.
        int nativeX = x;
        int nativeY = y;
        for (Component c = parent; 
             (c != null) && (c.peer instanceof LightweightPeer);
             c = c.parent) 
        {
            nativeX += c.x;
            nativeY += c.y;
        }
        peer.setBounds(nativeX, nativeY, width, height, op);
    
public voidresize(int width, int height)

deprecated
As of JDK version 1.1, replaced by setSize(int, int).

        synchronized(getTreeLock()) {
            setBoundsOp(ComponentPeer.SET_SIZE);            
            setBounds(x, y, width, height);
        }
    
public voidresize(java.awt.Dimension d)

deprecated
As of JDK version 1.1, replaced by setSize(Dimension).

        setSize(d.width, d.height);
    
public voidsetBackground(java.awt.Color c)
Sets the background color of this component.

The background color affects each component differently and the parts of the component that are affected by the background color may differ between operating systems.

param
c the color to become this component's color; if this parameter is null, then this component will inherit the background color of its parent
see
#getBackground
since
JDK1.0
beaninfo
bound: true

        Color oldColor = background;
        ComponentPeer peer = this.peer;
        background = c;
        if (peer != null) {
            c = getBackground();
            if (c != null) {
                peer.setBackground(c);
            }
        }
        // This is a bound property, so report the change to
        // any registered listeners.  (Cheap if there are none.)
        firePropertyChange("background", oldColor, c);
    
public voidsetBounds(int x, int y, int width, int height)
Moves and resizes this component. The new location of the top-left corner is specified by x and y, and the new size is specified by width and height.

param
x the new x-coordinate of this component
param
y the new y-coordinate of this component
param
width the new width of this component
param
height the new height of this component
see
#getBounds
see
#setLocation(int, int)
see
#setLocation(Point)
see
#setSize(int, int)
see
#setSize(Dimension)
since
JDK1.1

        reshape(x, y, width, height);
    
public voidsetBounds(java.awt.Rectangle r)
Moves and resizes this component to conform to the new bounding rectangle r. This component's new position is specified by r.x and r.y, and its new size is specified by r.width and r.height

param
r the new bounding rectangle for this component
see
#getBounds
see
#setLocation(int, int)
see
#setLocation(Point)
see
#setSize(int, int)
see
#setSize(Dimension)
since
JDK1.1

        setBounds(r.x, r.y, r.width, r.height);
    
voidsetBoundsOp(int op)

        assert Thread.holdsLock(getTreeLock());
        if (op == ComponentPeer.RESET_OPERATION) {
            boundsOp = ComponentPeer.DEFAULT_OPERATION;
        } else 
            if (boundsOp == ComponentPeer.DEFAULT_OPERATION) {
                boundsOp = op;
            }            
    
public voidsetComponentOrientation(java.awt.ComponentOrientation o)
Sets the language-sensitive orientation that is to be used to order the elements or text within this component. Language-sensitive LayoutManager and Component subclasses will use this property to determine how to lay out and draw components.

At construction time, a component's orientation is set to ComponentOrientation.UNKNOWN, indicating that it has not been specified explicitly. The UNKNOWN orientation behaves the same as ComponentOrientation.LEFT_TO_RIGHT.

To set the orientation of a single component, use this method. To set the orientation of an entire component hierarchy, use {@link #applyComponentOrientation applyComponentOrientation}.

see
ComponentOrientation
author
Laura Werner, IBM
beaninfo
bound: true

        ComponentOrientation oldValue = componentOrientation;
        componentOrientation = o;

        // This is a bound property, so report the change to
        // any registered listeners.  (Cheap if there are none.)
        firePropertyChange("componentOrientation", oldValue, o);

        // This could change the preferred size of the Component.
        if (valid) {
            invalidate();
        }
    
public voidsetCursor(java.awt.Cursor cursor)
Sets the cursor image to the specified cursor. This cursor image is displayed when the contains method for this component returns true for the current cursor location, and this Component is visible, displayable, and enabled. Setting the cursor of a Container causes that cursor to be displayed within all of the container's subcomponents, except for those that have a non-null cursor.

param
cursor One of the constants defined by the Cursor class; if this parameter is null then this component will inherit the cursor of its parent
see
#isEnabled
see
#isShowing
see
#getCursor
see
#contains
see
Toolkit#createCustomCursor
see
Cursor
since
JDK1.1

        this.cursor = cursor;
        updateCursorImmediately();
    
public synchronized voidsetDropTarget(java.awt.dnd.DropTarget dt)
Associate a DropTarget with this component. The Component will receive drops only if it is enabled.

see
#isEnabled
param
dt The DropTarget

        if (dt == dropTarget || (dropTarget != null && dropTarget.equals(dt)))
            return;

        DropTarget old;

        if ((old = dropTarget) != null) {
            if (peer != null) dropTarget.removeNotify(peer);

            DropTarget t = dropTarget;

            dropTarget = null;

            try {
                t.setComponent(null);
            } catch (IllegalArgumentException iae) {
                // ignore it.
            }
        }

        // if we have a new one, and we have a peer, add it!

        if ((dropTarget = dt) != null) {
            try {
                dropTarget.setComponent(this);
                if (peer != null) dropTarget.addNotify(peer);
            } catch (IllegalArgumentException iae) {
                if (old != null) {
                    try {
                        old.setComponent(this);
                        if (peer != null) dropTarget.addNotify(peer);
                    } catch (IllegalArgumentException iae1) {
                        // ignore it!
                    }
                }
            }
        }
    
public voidsetEnabled(boolean b)
Enables or disables this component, depending on the value of the parameter b. An enabled component can respond to user input and generate events. Components are enabled initially by default.

Note: Disabling a lightweight component does not prevent it from receiving MouseEvents.

param
b If true, this component is enabled; otherwise this component is disabled
see
#isEnabled
see
#isLightweight
since
JDK1.1

        enable(b);
    
public voidsetFocusTraversalKeys(int id, java.util.Set keystrokes)
Sets the focus traversal keys for a given traversal operation for this Component.

The default values for a Component'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.
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
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 Component. 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 Component inherits the Set from its parent. If all ancestors of this Component have null specified for the Set, then the current KeyboardFocusManager's default Set is used.

param
id one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS
param
keystrokes the Set of AWTKeyStroke for the specified operation
see
#getFocusTraversalKeys
see
KeyboardFocusManager#FORWARD_TRAVERSAL_KEYS
see
KeyboardFocusManager#BACKWARD_TRAVERSAL_KEYS
see
KeyboardFocusManager#UP_CYCLE_TRAVERSAL_KEYS
throws
IllegalArgumentException if id is not one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or if keystrokes contains null, or if any Object in keystrokes is not an AWTKeyStroke, or if any keystroke represents a KEY_TYPED event, or if any keystroke already maps to another focus traversal operation for this Component
since
1.4
beaninfo
bound: true

        if (id < 0 || id >= KeyboardFocusManager.TRAVERSAL_KEY_LENGTH - 1) {
            throw new IllegalArgumentException("invalid focus traversal key identifier");
        }
      
        setFocusTraversalKeys_NoIDCheck(id, keystrokes);
    
public voidsetFocusTraversalKeysEnabled(boolean focusTraversalKeysEnabled)
Sets whether focus traversal keys are enabled for this Component. Components for which focus traversal keys are disabled receive key events for focus traversal keys. Components for which focus traversal keys are enabled do not see these events; instead, the events are automatically converted to traversal operations.

param
focusTraversalKeysEnabled whether focus traversal keys are enabled for this Component
see
#getFocusTraversalKeysEnabled
see
#setFocusTraversalKeys
see
#getFocusTraversalKeys
since
1.4
beaninfo
bound: true

        boolean oldFocusTraversalKeysEnabled;
        synchronized (this) {
            oldFocusTraversalKeysEnabled = this.focusTraversalKeysEnabled;
            this.focusTraversalKeysEnabled = focusTraversalKeysEnabled;
        }
        firePropertyChange("focusTraversalKeysEnabled",
                           oldFocusTraversalKeysEnabled,
                           focusTraversalKeysEnabled);
    
final voidsetFocusTraversalKeys_NoIDCheck(int id, java.util.Set keystrokes)

        Set oldKeys;

        synchronized (this) {
            if (focusTraversalKeys == null) {
                initializeFocusTraversalKeys();
            }

            if (keystrokes != null) {
                for (Iterator iter = keystrokes.iterator(); iter.hasNext(); ) {
                    Object obj = iter.next();

                    if (obj == null) {
                        throw new IllegalArgumentException("cannot set null focus traversal key");
                    }

                    // Generates a ClassCastException if the element is not an
                    // AWTKeyStroke. This is desirable.
                    AWTKeyStroke keystroke = (AWTKeyStroke)obj;

                    if (keystroke.getKeyChar() != KeyEvent.CHAR_UNDEFINED) {
                        throw new IllegalArgumentException("focus traversal keys cannot map to KEY_TYPED events");
                    }

                    for (int i = 0; i < focusTraversalKeys.length; i++) {
                        if (i == id) {
                            continue;
                        }
                        
                        if (getFocusTraversalKeys_NoIDCheck(i).contains(keystroke))
                        {
                            throw new IllegalArgumentException("focus traversal keys must be unique for a Component");
                        }
                    }
                }
            }

            oldKeys = focusTraversalKeys[id];
            focusTraversalKeys[id] = (keystrokes != null)
                ? Collections.unmodifiableSet(new HashSet(keystrokes))
                : null;
        }

        firePropertyChange(focusTraversalKeyPropertyNames[id], oldKeys,
                           keystrokes);
    
public voidsetFocusable(boolean focusable)
Sets the focusable state of this Component to the specified value. This value overrides the Component's default focusability.

param
focusable indicates whether this Component is focusable
see
#isFocusable
since
1.4
beaninfo
bound: true

        boolean oldFocusable;
        synchronized (this) {
            oldFocusable = this.focusable;
            this.focusable = focusable;
        }
        isFocusTraversableOverridden = FOCUS_TRAVERSABLE_SET;
 
        firePropertyChange("focusable", oldFocusable, focusable);
        if (oldFocusable && !focusable) {
            if (isFocusOwner()) {
                autoTransferFocus(true);
            }
            KeyboardFocusManager.clearMostRecentFocusOwner(this);
        }
    
public voidsetFont(java.awt.Font f)
Sets the font of this component.

param
f the font to become this component's font; if this parameter is null then this component will inherit the font of its parent
see
#getFont
since
JDK1.0
beaninfo
bound: true

        Font oldFont, newFont;
        synchronized(getTreeLock()) {
            synchronized (this) {
                oldFont = font;
                newFont = font = f;
            }
            ComponentPeer peer = this.peer;
            if (peer != null) {
                f = getFont();
                if (f != null) {
                    peer.setFont(f);
                    peerFont = f;
                }
            }
        }
        // This is a bound property, so report the change to
        // any registered listeners.  (Cheap if there are none.)
        firePropertyChange("font", oldFont, newFont);

        // This could change the preferred size of the Component.
        if (valid) {
            invalidate();
        }
    
public voidsetForeground(java.awt.Color c)
Sets the foreground color of this component.

param
c the color to become this component's foreground color; if this parameter is null then this component will inherit the foreground color of its parent
see
#getForeground
since
JDK1.0

        Color oldColor = foreground;
        ComponentPeer peer = this.peer;
        foreground = c;
        if (peer != null) {
            c = getForeground();
            if (c != null) {
                peer.setForeground(c);
            }
        }
        // This is a bound property, so report the change to
        // any registered listeners.  (Cheap if there are none.)
        firePropertyChange("foreground", oldColor, c);
    
voidsetGCFromPeer()

        synchronized(getTreeLock()) {
            if (peer != null) { // can't imagine how this will be false, 
                                // but just in case
                graphicsConfig = peer.getGraphicsConfiguration();
            } else {
                graphicsConfig = null;
            }
        }
    
public voidsetIgnoreRepaint(boolean ignoreRepaint)
Sets whether or not paint messages received from the operating system should be ignored. This does not affect paint events generated in software by the AWT, unless they are an immediate response to an OS-level paint message.

This is useful, for example, if running under full-screen mode and better performance is desired, or if page-flipping is used as the buffer strategy.

since
1.4
see
#getIgnoreRepaint
see
Canvas#createBufferStrategy
see
Window#createBufferStrategy
see
java.awt.image.BufferStrategy
see
GraphicsDevice#setFullScreenWindow

        this.ignoreRepaint = ignoreRepaint;
    
public voidsetLocale(java.util.Locale l)
Sets the locale of this component. This is a bound property.

param
l the locale to become this component's locale
see
#getLocale
since
JDK1.1

        Locale oldValue = locale;
        locale = l;

        // This is a bound property, so report the change to
        // any registered listeners.  (Cheap if there are none.)
        firePropertyChange("locale", oldValue, l);

        // This could change the preferred size of the Component.
        if (valid) {
            invalidate();
        }
    
public voidsetLocation(int x, int y)
Moves this component to a new location. The top-left corner of the new location is specified by the x and y parameters in the coordinate space of this component's parent.

param
x the x-coordinate of the new location's top-left corner in the parent's coordinate space
param
y the y-coordinate of the new location's top-left corner in the parent's coordinate space
see
#getLocation
see
#setBounds
since
JDK1.1

        move(x, y);
    
public voidsetLocation(java.awt.Point p)
Moves this component to a new location. The top-left corner of the new location is specified by point p. Point p is given in the parent's coordinate space.

param
p the point defining the top-left corner of the new location, given in the coordinate space of this component's parent
see
#getLocation
see
#setBounds
since
JDK1.1

        setLocation(p.x, p.y);
    
public voidsetMaximumSize(java.awt.Dimension maximumSize)
Sets the maximum size of this component to a constant value. Subsequent calls to getMaximumSize will always return this value. Setting the maximum size to null restores the default behavior.

param
maximumSize a Dimension containing the desired maximum allowable size
see
#getMaximumSize
see
#isMaximumSizeSet
since
1.5

        // If the maximum size was set, use it as the old value, otherwise
        // use null to indicate we didn't previously have a set maximum
        // size.
        Dimension old;
        if (maxSizeSet) {
            old = this.maxSize;
        }
        else {
            old = null;
        }
        this.maxSize = maximumSize;
        maxSizeSet = (maximumSize != null);
        firePropertyChange("maximumSize", old, maximumSize);
    
public voidsetMinimumSize(java.awt.Dimension minimumSize)
Sets the minimum size of this component to a constant value. Subsequent calls to getMinimumSize will always return this value. Setting the minimum size to null restores the default behavior.

param
minimumSize the new minimum size of this component
see
#getMinimumSize
see
#isMinimumSizeSet
since
1.5

        Dimension old;
        // If the minimum size was set, use it as the old value, otherwise
        // use null to indicate we didn't previously have a set minimum
        // size.
        if (minSizeSet) {
            old = this.minSize;
        }
        else {
            old = null;
        }
        this.minSize = minimumSize;
        minSizeSet = (minimumSize != null);
        firePropertyChange("minimumSize", old, minimumSize);
    
public voidsetName(java.lang.String name)
Sets the name of the component to the specified string.

param
name the string that is to be this component's name
see
#getName
since
JDK1.1

        String oldName;
        synchronized(this) {
            oldName = this.name;
            this.name = name;
            nameExplicitlySet = true;
        }
        firePropertyChange("name", oldName, name);
    
public voidsetPreferredSize(java.awt.Dimension preferredSize)
Sets the preferred size of this component to a constant value. Subsequent calls to getPreferredSize will always return this value. Setting the preferred size to null restores the default behavior.

param
preferredSize The new preferred size, or null
see
#getPreferredSize
see
#isPreferredSizeSet
since
1.5

        Dimension old;
        // If the preferred size was set, use it as the old value, otherwise
        // use null to indicate we didn't previously have a set preferred
        // size.
        if (prefSizeSet) {
            old = this.prefSize;
        }
        else {
            old = null;
        }
        this.prefSize = preferredSize;
        prefSizeSet = (preferredSize != null);
        firePropertyChange("preferredSize", old, preferredSize);
    
public voidsetSize(int width, int height)
Resizes this component so that it has width width and height height.

param
width the new width of this component in pixels
param
height the new height of this component in pixels
see
#getSize
see
#setBounds
since
JDK1.1

        resize(width, height);
    
public voidsetSize(java.awt.Dimension d)
Resizes this component so that it has width d.width and height d.height.

param
d the dimension specifying the new size of this component
see
#setSize
see
#setBounds
since
JDK1.1

        resize(d);
    
public voidsetVisible(boolean b)
Shows or hides this component depending on the value of parameter b.

param
b if true, shows this component; otherwise, hides this component
see
#isVisible
since
JDK1.1

        show(b);
    
public voidshow()

deprecated
As of JDK version 1.1, replaced by setVisible(boolean).

        if (!visible) {
            synchronized (getTreeLock()) {
                visible = true;
                ComponentPeer peer = this.peer;
                if (peer != null) {
                    peer.show();
                    createHierarchyEvents(HierarchyEvent.HIERARCHY_CHANGED,
                                          this, parent,
                                          HierarchyEvent.SHOWING_CHANGED,
                                          Toolkit.enabledOnToolkit(AWTEvent.HIERARCHY_EVENT_MASK));
                    if (peer instanceof LightweightPeer) {
                        repaint();
                    }
                    updateCursorImmediately();
                }

                if (componentListener != null ||
                    (eventMask & AWTEvent.COMPONENT_EVENT_MASK) != 0 ||
                    Toolkit.enabledOnToolkit(AWTEvent.COMPONENT_EVENT_MASK)) {
                    ComponentEvent e = new ComponentEvent(this,
                                                          ComponentEvent.COMPONENT_SHOWN);
                    Toolkit.getEventQueue().postEvent(e);
                }
            }
            Container parent = this.parent;
            if (parent != null) {
                parent.invalidate();
            }
        }
    
public voidshow(boolean b)

deprecated
As of JDK version 1.1, replaced by setVisible(boolean).

        if (b) {
            show();
        } else {
            hide();
        }
    
public java.awt.Dimensionsize()

deprecated
As of JDK version 1.1, replaced by getSize().

        return new Dimension(width, height);
    
public java.lang.StringtoString()
Returns a string representation of this component and its values.

return
a string representation of this component
since
JDK1.0

        return getClass().getName() + "[" + paramString() + "]";
    
public voidtransferFocus()
Transfers the focus to the next component, as though this Component were the focus owner.

see
#requestFocus()
since
JDK1.1

        nextFocus();
    
public voidtransferFocusBackward()
Transfers the focus to the previous component, as though this Component were the focus owner.

see
#requestFocus()
since
1.4

        Container rootAncestor = getFocusCycleRootAncestor();
        Component comp = this;
        while (rootAncestor != null && 
               !(rootAncestor.isShowing() && 
                 rootAncestor.isFocusable() && 
                 rootAncestor.isEnabled())) 
        {
            comp = rootAncestor;
            rootAncestor = comp.getFocusCycleRootAncestor();
        }
        if (rootAncestor != null) {
            FocusTraversalPolicy policy =
                rootAncestor.getFocusTraversalPolicy();
            Component toFocus = policy.getComponentBefore(rootAncestor, comp);
            if (toFocus == null) {
                toFocus = policy.getDefaultComponent(rootAncestor);
            }
            if (toFocus != null) {
                toFocus.requestFocus();
            }
        }
    
public voidtransferFocusUpCycle()
Transfers the focus up one focus traversal cycle. Typically, the focus owner is set to this Component's focus cycle root, and the current focus cycle root is set to the new focus owner's focus cycle root. If, however, this Component's focus cycle root is a Window, then the focus owner is set to the focus cycle root's default Component to focus, and the current focus cycle root is unchanged.

see
#requestFocus()
see
Container#isFocusCycleRoot()
see
Container#setFocusCycleRoot(boolean)
since
1.4

        Container rootAncestor;
        for (rootAncestor = getFocusCycleRootAncestor();
             rootAncestor != null && !(rootAncestor.isShowing() &&
                                       rootAncestor.isFocusable() &&
                                       rootAncestor.isEnabled());
             rootAncestor = rootAncestor.getFocusCycleRootAncestor()) {
        }
        
        if (rootAncestor != null) {
            Container rootAncestorRootAncestor =
                rootAncestor.getFocusCycleRootAncestor();
            KeyboardFocusManager.getCurrentKeyboardFocusManager().
                setGlobalCurrentFocusCycleRoot(
                                               (rootAncestorRootAncestor != null)
                                               ? rootAncestorRootAncestor
                                               : rootAncestor);
            rootAncestor.requestFocus();
        } else {
            Container window =
                (this instanceof Container) ? ((Container)this) : getParent();
            while (window != null && !(window instanceof Window)) {
                window = window.getParent();
            }
            if (window != null) {
                Component toFocus = window.getFocusTraversalPolicy().
                    getDefaultComponent(window);
                if (toFocus != null) {
                    KeyboardFocusManager.getCurrentKeyboardFocusManager().
                        setGlobalCurrentFocusCycleRoot(window);
                    toFocus.requestFocus();
                }
            }
        }
    
public voidupdate(java.awt.Graphics g)
Updates this component.

If this component is not a lightweight component, the AWT calls the update method in response to a call to repaint. You can assume that the background is not cleared.

The update method of Component calls this component's paint method to redraw this component. This method is commonly overridden by subclasses which need to do additional work in response to a call to repaint. Subclasses of Component that override this method should either call super.update(g), or call paint(g) directly from their update method.

The origin of the graphics context, its (00) coordinate point, is the top-left corner of this component. The clipping region of the graphics context is the bounding rectangle of this component.

Note: For more information on the paint mechanisms utilitized by AWT and Swing, including information on how to write the most efficient painting code, see Painting in AWT and Swing.

param
g the specified context to use for updating
see
#paint
see
#repaint()
since
JDK1.0

        paint(g);
    
final voidupdateCursorImmediately()
Updates the cursor. May not be invoked from the native message pump.

        if (peer instanceof LightweightPeer) {
            Container nativeContainer = getNativeContainer();
         
            if (nativeContainer == null) return;
        
            ComponentPeer cPeer = nativeContainer.getPeer();

            if (cPeer != null) {
                cPeer.updateCursorImmediately();
            }
        } else if (peer != null) {
            peer.updateCursorImmediately();
        }
    
public voidvalidate()
Ensures that this component has a valid layout. This method is primarily intended to operate on instances of Container.

see
#invalidate
see
#doLayout()
see
LayoutManager
see
Container#validate
since
JDK1.0

        if (!valid) {
            synchronized (getTreeLock()) {
                ComponentPeer peer = this.peer;
                if (!valid && peer != null) {
                    Font newfont = getFont();
                    Font oldfont = peerFont;
                    if (newfont != oldfont && (oldfont == null
                                               || !oldfont.equals(newfont))) {
                        peer.setFont(newfont);
                        peerFont = newfont;
                    }
                    peer.layout();
                }
            }
            valid = true;
        }
    
private voidwriteObject(java.io.ObjectOutputStream s)
Writes default serializable fields to stream. Writes a variety of serializable listeners as optional data. The non-serializable listeners are detected and no attempt is made to serialize them.

param
s the ObjectOutputStream to write
serialData
null terminated sequence of 0 or more pairs; the pair consists of a String and an Object; the String indicates the type of object and is one of the following (as of 1.4): componentListenerK indicating an ComponentListener object; focusListenerK indicating an FocusListener object; keyListenerK indicating an KeyListener object; mouseListenerK indicating an MouseListener object; mouseMotionListenerK indicating an MouseMotionListener object; inputListenerK indicating an InputListener object; hierarchyListenerK indicating an HierarchyListener object; hierarchyBoundsListenerK indicating an HierarchyBoundsListener object; mouseWheelListenerK indicating an MouseWheelListener object
serialData
an optional ComponentOrientation (after inputMethodListener, as of 1.2)
see
AWTEventMulticaster#save(java.io.ObjectOutputStream, java.lang.String, java.util.EventListener)
see
#componentListenerK
see
#focusListenerK
see
#keyListenerK
see
#mouseListenerK
see
#mouseMotionListenerK
see
#inputListenerK
see
#hierarchyListenerK
see
#hierarchyBoundsListenerK
see
#mouseWheelListenerK
see
#readObject(ObjectInputStream)

        doSwingSerialization();

        s.defaultWriteObject();

        AWTEventMulticaster.save(s, componentListenerK, componentListener);
        AWTEventMulticaster.save(s, focusListenerK, focusListener);
        AWTEventMulticaster.save(s, keyListenerK, keyListener);
        AWTEventMulticaster.save(s, mouseListenerK, mouseListener);
        AWTEventMulticaster.save(s, mouseMotionListenerK, mouseMotionListener);
        AWTEventMulticaster.save(s, inputMethodListenerK, inputMethodListener);

        s.writeObject(null);
        s.writeObject(componentOrientation);

        AWTEventMulticaster.save(s, hierarchyListenerK, hierarchyListener);
        AWTEventMulticaster.save(s, hierarchyBoundsListenerK,
                                 hierarchyBoundsListener);
        s.writeObject(null);

        AWTEventMulticaster.save(s, mouseWheelListenerK, mouseWheelListener);
        s.writeObject(null);