# Class PopupMenu

java.lang.Object
java.awt.MenuComponent
java.awt.MenuItem
java.awt.Menu
java.awt.PopupMenu

All Implemented Interfaces:
  `MenuContainer, Serializable, Accessible`

public class PopupMenu extends Menu
A class that implements a menu which can be dynamically popped up at a specified position within a component.

As the inheritance hierarchy implies, a `PopupMenu` can be used anywhere a `Menu` can be used. However, if you use a `PopupMenu` like a `Menu` (e.g., you add it to a `MenuBar`), then you cannot call `show` on that `PopupMenu`.

See Also:
  - Serialized Form

## Nested Class Summary

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

### Nested classes/interfaces declared in class Menu

`Menu.AccessibleAWTMenu`
Modifier and Type
Class
Description
`protected class`
`Menu.AccessibleAWTMenu`
Inner class of Menu used to provide default support for accessibility.

### Nested classes/interfaces declared in class MenuItem

`MenuItem.AccessibleAWTMenuItem`
Modifier and Type
Class
Description
`protected class`
`MenuItem.AccessibleAWTMenuItem`
Inner class of MenuItem 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
`PopupMenu()`
Creates a new popup menu with an empty name.
`PopupMenu(String label)`
Creates a new popup menu with the specified name.

## Method Summary

Modifier and Type
Method
Description
`void`
`addNotify()`
Creates the popup menu's peer.
`AccessibleContext`
`getAccessibleContext()`
Gets the `AccessibleContext` associated with this `PopupMenu`.
`void`
`show(Component origin, int x, int y)`
Shows the popup menu at the x, y position relative to an origin component.

### Methods declared in class Menu

`add, add, addSeparator, countItems, getItem, getItemCount, insert, insert, insertSeparator, isTearOff, paramString, remove, remove, removeAll, removeNotify`
Modifier and Type
Method
Description
`MenuItem`
`add(MenuItem mi)`
Adds the specified menu item to this menu.
`void`
`add(String label)`
Adds an item with the specified label to this menu.
`void`
`addSeparator()`
Adds a separator line, or a hyphen, to the menu at the current position.
`int`
`countItems()`
Deprecated.
As of JDK version 1.1, replaced by `getItemCount()`.
`MenuItem`
`getItem(int index)`
Gets the item located at the specified index of this menu.
`int`
`getItemCount()`
Get the number of items in this menu.
`void`
`insert(MenuItem menuitem, int index)`
Inserts a menu item into this menu at the specified position.
`void`
`insert(String label, int index)`
Inserts a menu item with the specified label into this menu at the specified position.
`void`
`insertSeparator(int index)`
Inserts a separator at the specified position.
`boolean`
`isTearOff()`
Indicates whether this menu is a tear-off menu.
`String`
`paramString()`
Returns a string representing the state of this `Menu`.
`void`
`remove(int index)`
Removes the menu item at the specified index from this menu.
`void`
`remove(MenuComponent item)`
Removes the specified menu item from this menu.
`void`
`removeAll()`
Removes all items from this menu.
`void`
`removeNotify()`
Removes the menu's peer.

### Methods declared in class MenuItem

`addActionListener, deleteShortcut, disable, disableEvents, enable, enable, enableEvents, getActionCommand, getActionListeners, getLabel, getListeners, getShortcut, isEnabled, processActionEvent, processEvent, removeActionListener, setActionCommand, setEnabled, setLabel, setShortcut`
Modifier and Type
Method
Description
`void`
`addActionListener(ActionListener l)`
Adds the specified action listener to receive action events from this menu item.
`void`
`deleteShortcut()`
Delete any `MenuShortcut` object associated with this menu item.
`void`
`disable()`
Deprecated.
As of JDK version 1.1, replaced by `setEnabled(boolean)`.
`protected final void`
`disableEvents(long eventsToDisable)`
Disables event delivery to this menu item for events defined by the specified event mask parameter.
`void`
`enable()`
Deprecated.
As of JDK version 1.1, replaced by `setEnabled(boolean)`.
`void`
`enable(boolean b)`
Deprecated.
As of JDK version 1.1, replaced by `setEnabled(boolean)`.
`protected final void`
`enableEvents(long eventsToEnable)`
Enables event delivery to this menu item for events to be defined by the specified event mask parameter
`String`
`getActionCommand()`
Gets the command name of the action event that is fired by this menu item.
`ActionListener[]`
`getActionListeners()`
Returns an array of all the action listeners registered on this menu item.
`String`
`getLabel()`
Gets the label for this menu item.
`<T extends EventListener>
T[]`
`getListeners(Class<T> listenerType)`
Returns an array of all the objects currently registered as `FooListener`s upon this `MenuItem`.
`MenuShortcut`
`getShortcut()`
Get the `MenuShortcut` object associated with this menu item,
`boolean`
`isEnabled()`
Checks whether this menu item is enabled.
`protected void`
`processActionEvent(ActionEvent e)`
Processes action events occurring on this menu item, by dispatching them to any registered `ActionListener` objects.
`protected void`
`processEvent(AWTEvent e)`
Processes events on this menu item.
`void`
`removeActionListener(ActionListener l)`
Removes the specified action listener so it no longer receives action events from this menu item.
`void`
`setActionCommand(String command)`
Sets the command name of the action event that is fired by this menu item.
`void`
`setEnabled(boolean b)`
Sets whether or not this menu item can be chosen.
`void`
`setLabel(String label)`
Sets the label for this menu item to the specified label.
`void`
`setShortcut(MenuShortcut s)`
Set the `MenuShortcut` object associated with this menu item.

### Methods declared in class MenuComponent

`dispatchEvent, getFont, getName, getParent, getTreeLock, postEvent, 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.
`boolean`
`postEvent(Event evt)`
Deprecated.
As of JDK version 1.1, replaced by `dispatchEvent`.
`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

### PopupMenu

public PopupMenu() throws HeadlessException
Creates a new popup menu with an empty name.

Throws:
  `HeadlessException` - if GraphicsEnvironment.isHeadless() returns true.
See Also:
  - `GraphicsEnvironment.isHeadless()`

### PopupMenu

public PopupMenu(String label) throws HeadlessException
Creates a new popup menu with the specified name.

Parameters:
  `label` - a non-`null` string specifying the popup menu's label
Throws:
  `HeadlessException` - if GraphicsEnvironment.isHeadless() returns true.
See Also:
  - `GraphicsEnvironment.isHeadless()`

## Method Details

### addNotify

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

Overrides:
  `addNotify` in class `Menu`

### show

public void show(Component origin, int x, int y)
Shows the popup menu at the x, y position relative to an origin component. The origin component must be contained within the component hierarchy of the popup menu's parent. Both the origin and the parent must be showing on the screen for this method to be valid.

If this `PopupMenu` is being used as a `Menu` (i.e., it has a non-`Component` parent), then you cannot call this method on the `PopupMenu`.

Parameters:
  `origin` - the component which defines the coordinate space
  `x` - the x coordinate position to popup the menu
  `y` - the y coordinate position to popup the menu
Throws:
  `NullPointerException` - if the parent is `null`
  `IllegalArgumentException` - if this `PopupMenu` has a non-`Component` parent
  `IllegalArgumentException` - if the origin is not in the parent's hierarchy
  `RuntimeException` - if the parent is not showing on screen

### getAccessibleContext

public AccessibleContext getAccessibleContext()
Gets the `AccessibleContext` associated with this `PopupMenu`.

Specified by:
  `getAccessibleContext` in interface `Accessible`
Overrides:
  `getAccessibleContext` in class `Menu`
Returns:
  the `AccessibleContext` of this `PopupMenu`
Since:
  1.3