# Class MenuComponent

java.lang.Object
java.awt.MenuComponent

All Implemented Interfaces:
  `Serializable`

Direct Known Subclasses:
  `MenuBar, MenuItem`

public abstract class MenuComponent extends Object implements Serializable
The abstract class `MenuComponent` is the superclass of all menu-related components. In this respect, the class `MenuComponent` is analogous to the abstract superclass `Component` for AWT components.

Menu components receive and process AWT events, just as components do, through the method `processEvent`.

Since:
  1.0
See Also:
  - Serialized Form

- ## Nested Class Summary

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

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MenuComponent()`
  Creates a `MenuComponent`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final void`
  `dispatchEvent(AWTEvent e)`
  Delivers an event to this component or one of its sub components.
  `AccessibleContext`
  `getAccessibleContext()`
  Gets the `AccessibleContext` associated with this `MenuComponent`.
  `Font`
  `getFont()`
  Gets the font used for this menu component.
  `String`
  `getName()`
  Gets the name of the menu component.
  `MenuContainer`
  `getParent()`
  Returns the parent container for this menu component.
  `protected final Object`
  `getTreeLock()`
  Gets this component's locking object (the object that owns the thread synchronization monitor) for AWT component-tree and layout operations.
  `protected String`
  `paramString()`
  Returns a string representing the state of this `MenuComponent`.
  `boolean`
  `postEvent(Event evt)`
  Deprecated.
  As of JDK version 1.1, replaced by `dispatchEvent`.
  `protected void`
  `processEvent(AWTEvent e)`
  Processes events occurring on this menu component.
  `void`
  `removeNotify()`
  Removes the menu component's peer.
  `void`
  `setFont(Font f)`
  Sets the font to be used for this menu component to the specified font.
  `void`
  `setName(String name)`
  Sets the name of the component to the specified string.
  `String`
  `toString()`
  Returns a representation of this menu component as a string.

  ### Methods declared in class Object

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

- ## Constructor Details

  - ### MenuComponent

    public MenuComponent() throws HeadlessException
    Creates a `MenuComponent`.
    Throws:
      `HeadlessException` - if `GraphicsEnvironment.isHeadless` returns `true`
    See Also:
      - `GraphicsEnvironment.isHeadless()`

- ## Method Details

  - ### getName

    public String getName()
    Gets the name of the menu component.
    Returns:
      the name of the menu component
    Since:
      1.1
    See Also:
      - `setName(java.lang.String)`

  - ### setName

    public void setName(String name)
    Sets the name of the component to the specified string.
    Parameters:
      `name` - the name of the menu component
    Since:
      1.1
    See Also:
      - `getName()`

  - ### getParent

    public MenuContainer getParent()
    Returns the parent container for this menu component.
    Returns:
      the menu component containing this menu component, or `null` if this menu component is the outermost component, the menu bar itself

  - ### getFont

    public Font getFont()
    Gets the font used for this menu component.
    Returns:
      the font used in this menu component, if there is one; `null` otherwise
    See Also:
      - `setFont(Font)`

  - ### setFont

    public void setFont(Font f)
    Sets the font to be used for this menu component to the specified font. This font is also used by all subcomponents of this menu component, unless those subcomponents specify a different font.

    Some platforms may not support setting of all font attributes of a menu component; in such cases, calling `setFont` will have no effect on the unsupported font attributes of this menu component. Unless subcomponents of this menu component specify a different font, this font will be used by those subcomponents if supported by the underlying platform.

    Parameters:
      `f` - the font to be set
    See Also:
      - `getFont()`
      - `Font.getAttributes()`
      - `TextAttribute`

  - ### removeNotify

    public void removeNotify()
    Removes the menu component's peer. The peer allows us to modify the appearance of the menu component without changing the functionality of the menu component.

  - ### postEvent

    @Deprecated public boolean postEvent(Event evt)
    Deprecated.
    As of JDK version 1.1, replaced by `dispatchEvent`.
    Posts the specified event to the menu. This method is part of the Java 1.0 event system and it is maintained only for backwards compatibility. Its use is discouraged, and it may not be supported in the future.
    Parameters:
      `evt` - the event which is to take place
    Returns:
      unconditionally returns false

  - ### dispatchEvent

    public final void dispatchEvent(AWTEvent e)
    Delivers an event to this component or one of its sub components.
    Parameters:
      `e` - the event

  - ### processEvent

    protected void processEvent(AWTEvent e)
    Processes events occurring on this menu component.

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

    Parameters:
      `e` - the event
    Since:
      1.1

  - ### paramString

    protected String paramString()
    Returns a string representing the state of this `MenuComponent`. 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`.
    Returns:
      the parameter string of this menu component

  - ### toString

    public String toString()
    Returns a representation of this menu component as a string.
    Overrides:
      `toString` in class `Object`
    Returns:
      a string representation of this menu component

  - ### getTreeLock

    protected final Object getTreeLock()
    Gets this component's locking object (the object that owns the thread synchronization monitor) for AWT component-tree and layout operations.
    Returns:
      this component's locking object

  - ### getAccessibleContext

    public AccessibleContext getAccessibleContext()
    Gets the `AccessibleContext` associated with this `MenuComponent`. The method implemented by this base class returns `null`. Classes that extend `MenuComponent` should implement this method to return the `AccessibleContext` associated with the subclass.
    Returns:
      the `AccessibleContext` of this `MenuComponent`
    Since:
      1.3