MenuBar (Java SE 26 & JDK 26)
Description: declaration: module: java.desktop, package: java.awt, class: MenuBar
Keywords: java.awt.MenuBar class

# Class MenuBar

java.lang.Object
java.awt.MenuComponent
java.awt.MenuBar

All Implemented Interfaces:
  `MenuContainer, Serializable, Accessible`

public class MenuBar extends MenuComponent implements MenuContainer, Accessible
The `MenuBar` class encapsulates the platform's concept of a menu bar bound to a frame. In order to associate the menu bar with a `Frame` object, call the frame's `setMenuBar` method.

This is what a menu bar might look like:

A menu bar handles keyboard shortcuts for menu items, passing them along to its child menus. (Keyboard shortcuts, which are optional, provide the user with an alternative to the mouse for invoking a menu item and the action that is associated with it.) Each menu item can maintain an instance of `MenuShortcut`. The `MenuBar` class defines several methods, `shortcuts()` and `getShortcutMenuItem(MenuShortcut)` that retrieve information about the shortcuts a given menu bar is managing.

Since:
  1.0
See Also:
  - `Frame`
  - `Frame.setMenuBar(java.awt.MenuBar)`
  - `Menu`
  - `MenuItem`
  - `MenuShortcut`
  - Serialized Form

- ## Nested Class Summary

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

  ### Nested classes/interfaces declared in class MenuComponent

  `MenuComponent.AccessibleAWTMenuComponent`
  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
  `MenuBar()`
  Creates a new menu bar.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Menu`
  `add(Menu m)`
  Adds the specified menu to the menu bar.
  `void`
  `addNotify()`
  Creates the menu bar's peer.
  `int`
  `countMenus()`
  Deprecated.
  As of JDK version 1.1, replaced by `getMenuCount()`.
  `void`
  `deleteShortcut(MenuShortcut s)`
  Deletes the specified menu shortcut.
  `AccessibleContext`
  `getAccessibleContext()`
  Gets the AccessibleContext associated with this MenuBar.
  `Menu`
  `getHelpMenu()`
  Gets the help menu on the menu bar.
  `Menu`
  `getMenu(int i)`
  Gets the specified menu.
  `int`
  `getMenuCount()`
  Gets the number of menus on the menu bar.
  `MenuItem`
  `getShortcutMenuItem(MenuShortcut s)`
  Gets the instance of `MenuItem` associated with the specified `MenuShortcut` object, or `null` if none of the menu items being managed by this menu bar is associated with the specified menu shortcut.
  `void`
  `remove(int index)`
  Removes the menu located at the specified index from this menu bar.
  `void`
  `remove(MenuComponent m)`
  Removes the specified menu component from this menu bar.
  `void`
  `removeNotify()`
  Removes the menu bar's peer.
  `void`
  `setHelpMenu(Menu m)`
  Sets the specified menu to be this menu bar's help menu.
  `Enumeration<MenuShortcut>`
  `shortcuts()`
  Gets an enumeration of all menu shortcuts this menu bar is managing.

  ### Methods declared in class MenuComponent

  `dispatchEvent, getFont, getName, getParent, getTreeLock, paramString, postEvent, processEvent, setFont, setName, toString`
  Modifier and Type
  Method
  Description
  `final void`
  `dispatchEvent(AWTEvent e)`
  Delivers an event to this component or one of its sub components.
  `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`
  `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.

  ### Methods declared in interface MenuContainer

  `getFont, postEvent`
  Modifier and Type
  Method
  Description
  `Font`
  `getFont()`
  Returns the font in use by this container.
  `boolean`
  `postEvent(Event evt)`
  Deprecated.
  As of JDK version 1.1 replaced by dispatchEvent(AWTEvent).

- ## Constructor Details

  - ### MenuBar

    public MenuBar() throws HeadlessException
    Creates a new menu bar.
    Throws:
      `HeadlessException` - if GraphicsEnvironment.isHeadless() returns true.
    See Also:
      - `GraphicsEnvironment.isHeadless()`

- ## Method Details

  - ### addNotify

    public void addNotify()
    Creates the menu bar's peer. The peer allows us to change the appearance of the menu bar without changing any of the menu bar's functionality.

  - ### removeNotify

    public void removeNotify()
    Removes the menu bar's peer. The peer allows us to change the appearance of the menu bar without changing any of the menu bar's functionality.
    Overrides:
      `removeNotify` in class `MenuComponent`

  - ### getHelpMenu

    public Menu getHelpMenu()
    Gets the help menu on the menu bar.
    Returns:
      the help menu on this menu bar.

  - ### setHelpMenu

    public void setHelpMenu(Menu m)
    Sets the specified menu to be this menu bar's help menu. If this menu bar has an existing help menu, the old help menu is removed from the menu bar, and replaced with the specified menu.
    Parameters:
      `m` - the menu to be set as the help menu

  - ### add

    public Menu add(Menu m)
    Adds the specified menu to the menu bar. If the menu has been part of another menu bar, removes it from that menu bar.
    Parameters:
      `m` - the menu to be added
    Returns:
      the menu added
    See Also:
      - `remove(int)`
      - `remove(java.awt.MenuComponent)`

  - ### remove

    public void remove(int index)
    Removes the menu located at the specified index from this menu bar.
    Parameters:
      `index` - the position of the menu to be removed.
    See Also:
      - `add(java.awt.Menu)`

  - ### remove

    public void remove(MenuComponent m)
    Removes the specified menu component from this menu bar.
    Specified by:
      `remove` in interface `MenuContainer`
    Parameters:
      `m` - the menu component to be removed.
    See Also:
      - `add(java.awt.Menu)`

  - ### getMenuCount

    public int getMenuCount()
    Gets the number of menus on the menu bar.
    Returns:
      the number of menus on the menu bar.
    Since:
      1.1

  - ### countMenus

    @Deprecated public int countMenus()
    Deprecated.
    As of JDK version 1.1, replaced by `getMenuCount()`.
    Gets the number of menus on the menu bar.
    Returns:
      the number of menus on the menu bar.

  - ### getMenu

    public Menu getMenu(int i)
    Gets the specified menu.
    Parameters:
      `i` - the index position of the menu to be returned.
    Returns:
      the menu at the specified index of this menu bar.

  - ### shortcuts

    public Enumeration<MenuShortcut> shortcuts()
    Gets an enumeration of all menu shortcuts this menu bar is managing.
    Returns:
      an enumeration of menu shortcuts that this menu bar is managing.
    Since:
      1.1
    See Also:
      - `MenuShortcut`

  - ### getShortcutMenuItem

    public MenuItem getShortcutMenuItem(MenuShortcut s)
    Gets the instance of `MenuItem` associated with the specified `MenuShortcut` object, or `null` if none of the menu items being managed by this menu bar is associated with the specified menu shortcut.
    Parameters:
      `s` - the specified menu shortcut.
    Returns:
      the menu item for the specified shortcut.
    Since:
      1.1
    See Also:
      - `MenuItem`
      - `MenuShortcut`

  - ### deleteShortcut

    public void deleteShortcut(MenuShortcut s)
    Deletes the specified menu shortcut.
    Parameters:
      `s` - the menu shortcut to delete.
    Since:
      1.1

  - ### getAccessibleContext

    public AccessibleContext getAccessibleContext()
    Gets the AccessibleContext associated with this MenuBar. For menu bars, the AccessibleContext takes the form of an AccessibleAWTMenuBar. A new AccessibleAWTMenuBar instance is created if necessary.
    Specified by:
      `getAccessibleContext` in interface `Accessible`
    Overrides:
      `getAccessibleContext` in class `MenuComponent`
    Returns:
      an AccessibleAWTMenuBar that serves as the AccessibleContext of this MenuBar
    Since:
      1.3