Module java.desktop
Package javax.swing

## Class JMenuItem

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.AbstractButton
        - - javax.swing.JMenuItem

- All Implemented Interfaces:
    `ImageObserver`, `ItemSelectable`, `MenuContainer`, `Serializable`, `Accessible`, `MenuElement`, `SwingConstants`
  Direct Known Subclasses:
    `JCheckBoxMenuItem`, `JMenu`, `JRadioButtonMenuItem`

      @JavaBean(defaultProperty="UIClassID",
                description="An item which can be selected in a menu.")
      public class JMenuItem
      extends AbstractButton
      implements Accessible, MenuElement

  An implementation of an item in a menu. A menu item is essentially a button sitting in a list. When the user selects the "button", the action associated with the menu item is performed. A `JMenuItem` contained in a `JPopupMenu` performs exactly that function.

  Menu items can be configured, and to some degree controlled, by `Action`s. Using an `Action` with a menu item has many benefits beyond directly configuring a menu item. Refer to Swing Components Supporting `Action` for more details, and you can find more information in How to Use Actions, a section in The Java Tutorial.

  For further documentation and for examples, see How to Use Menus in The Java Tutorial.

  Warning: Swing is not thread safe. For more information see Swing's Threading Policy.

  Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans™ has been added to the `java.beans` package. Please see `XMLEncoder`.

  Since:
    1.2
  See Also:
    `JPopupMenu`, `JMenu`, `JCheckBoxMenuItem`, `JRadioButtonMenuItem`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected class` | `JMenuItem.AccessibleJMenuItem` | This class implements accessibility support for the `JMenuItem` class.

    - ### Nested classes/interfaces declared in class javax.swing.AbstractButton

      `AbstractButton.AccessibleAbstractButton, AbstractButton.ButtonChangeListener`

    - ### Nested classes/interfaces declared in class javax.swing.JComponent

      `JComponent.AccessibleJComponent`

    - ### Nested classes/interfaces declared in class java.awt.Container

      `Container.AccessibleAWTContainer`

    - ### Nested classes/interfaces declared in class java.awt.Component

      `Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

  - ### Field Summary

    - ### Fields declared in class javax.swing.AbstractButton

      `actionListener, BORDER_PAINTED_CHANGED_PROPERTY, changeEvent, changeListener, CONTENT_AREA_FILLED_CHANGED_PROPERTY, DISABLED_ICON_CHANGED_PROPERTY, DISABLED_SELECTED_ICON_CHANGED_PROPERTY, FOCUS_PAINTED_CHANGED_PROPERTY, HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY, HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY, ICON_CHANGED_PROPERTY, itemListener, MARGIN_CHANGED_PROPERTY, MNEMONIC_CHANGED_PROPERTY, model, MODEL_CHANGED_PROPERTY, PRESSED_ICON_CHANGED_PROPERTY, ROLLOVER_ENABLED_CHANGED_PROPERTY, ROLLOVER_ICON_CHANGED_PROPERTY, ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY, SELECTED_ICON_CHANGED_PROPERTY, TEXT_CHANGED_PROPERTY, VERTICAL_ALIGNMENT_CHANGED_PROPERTY, VERTICAL_TEXT_POSITION_CHANGED_PROPERTY`

    - ### Fields declared in class javax.swing.JComponent

      `listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

    - ### Fields declared in class java.awt.Component

      `accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

    - ### Fields declared in interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

    - ### Fields declared in interface javax.swing.SwingConstants

      `BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JMenuItem()` | Creates a `JMenuItem` with no set text or icon.
    `JMenuItem​(String text)` | Creates a `JMenuItem` with the specified text.
    `JMenuItem​(String text, int mnemonic)` | Creates a `JMenuItem` with the specified text and keyboard mnemonic.
    `JMenuItem​(String text, Icon icon)` | Creates a `JMenuItem` with the specified text and icon.
    `JMenuItem​(Action a)` | Creates a menu item whose properties are taken from the specified `Action`.
    `JMenuItem​(Icon icon)` | Creates a `JMenuItem` with the specified icon.

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `actionPropertyChanged​(Action action, String propertyName)` | Updates the button's state in response to property changes in the associated action.
    `void` | `addMenuDragMouseListener​(MenuDragMouseListener l)` | Adds a `MenuDragMouseListener` to the menu item.
    `void` | `addMenuKeyListener​(MenuKeyListener l)` | Adds a `MenuKeyListener` to the menu item.
    `protected void` | `configurePropertiesFromAction​(Action a)` | Sets the properties on this button to match those in the specified `Action`.
    `protected void` | `fireMenuDragMouseDragged​(MenuDragMouseEvent event)` | Notifies all listeners that have registered interest for notification on this event type.
    `protected void` | `fireMenuDragMouseEntered​(MenuDragMouseEvent event)` | Notifies all listeners that have registered interest for notification on this event type.
    `protected void` | `fireMenuDragMouseExited​(MenuDragMouseEvent event)` | Notifies all listeners that have registered interest for notification on this event type.
    `protected void` | `fireMenuDragMouseReleased​(MenuDragMouseEvent event)` | Notifies all listeners that have registered interest for notification on this event type.
    `protected void` | `fireMenuKeyPressed​(MenuKeyEvent event)` | Notifies all listeners that have registered interest for notification on this event type.
    `protected void` | `fireMenuKeyReleased​(MenuKeyEvent event)` | Notifies all listeners that have registered interest for notification on this event type.
    `protected void` | `fireMenuKeyTyped​(MenuKeyEvent event)` | Notifies all listeners that have registered interest for notification on this event type.
    `KeyStroke` | `getAccelerator()` | Returns the `KeyStroke` which serves as an accelerator for the menu item.
    `AccessibleContext` | `getAccessibleContext()` | Returns the `AccessibleContext` associated with this `JMenuItem`.
    `Component` | `getComponent()` | Returns the `java.awt.Component` used to paint this object.
    `MenuDragMouseListener[]` | `getMenuDragMouseListeners()` | Returns an array of all the `MenuDragMouseListener`s added to this JMenuItem with addMenuDragMouseListener().
    `MenuKeyListener[]` | `getMenuKeyListeners()` | Returns an array of all the `MenuKeyListener`s added to this JMenuItem with addMenuKeyListener().
    `MenuElement[]` | `getSubElements()` | This method returns an array containing the sub-menu components for this menu component.
    `String` | `getUIClassID()` | Returns the suffix used to construct the name of the L&F class used to render this component.
    `protected void` | `init​(String text, Icon icon)` | Initializes the menu item with the specified text and icon.
    `boolean` | `isArmed()` | Returns whether the menu item is "armed".
    `void` | `menuSelectionChanged​(boolean isIncluded)` | Called by the `MenuSelectionManager` when the `MenuElement` is selected or unselected.
    `protected String` | `paramString()` | Returns a string representation of this `JMenuItem`.
    `void` | `processKeyEvent​(KeyEvent e, MenuElement[] path, MenuSelectionManager manager)` | Processes a key event forwarded from the `MenuSelectionManager` and changes the menu selection, if necessary, by using `MenuSelectionManager`'s API.
    `void` | `processMenuDragMouseEvent​(MenuDragMouseEvent e)` | Handles mouse drag in a menu.
    `void` | `processMenuKeyEvent​(MenuKeyEvent e)` | Handles a keystroke in a menu.
    `void` | `processMouseEvent​(MouseEvent e, MenuElement[] path, MenuSelectionManager manager)` | Processes a mouse event forwarded from the `MenuSelectionManager` and changes the menu selection, if necessary, by using the `MenuSelectionManager`'s API.
    `void` | `removeMenuDragMouseListener​(MenuDragMouseListener l)` | Removes a `MenuDragMouseListener` from the menu item.
    `void` | `removeMenuKeyListener​(MenuKeyListener l)` | Removes a `MenuKeyListener` from the menu item.
    `void` | `setAccelerator​(KeyStroke keyStroke)` | Sets the key combination which invokes the menu item's action listeners without navigating the menu hierarchy.
    `void` | `setArmed​(boolean b)` | Identifies the menu item as "armed".
    `void` | `setEnabled​(boolean b)` | Enables or disables the menu item.
    `void` | `setUI​(MenuItemUI ui)` | Sets the look and feel object that renders this component.
    `void` | `updateUI()` | Resets the UI property with a value from the current look and feel.

    - ### Methods declared in class javax.swing.AbstractButton

      `addActionListener, addChangeListener, addImpl, addItemListener, checkHorizontalKey, checkVerticalKey, createActionListener, createActionPropertyChangeListener, createChangeListener, createItemListener, doClick, doClick, fireActionPerformed, fireItemStateChanged, fireStateChanged, getAction, getActionCommand, getActionListeners, getChangeListeners, getDisabledIcon, getDisabledSelectedIcon, getDisplayedMnemonicIndex, getHideActionText, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getItemListeners, getLabel, getMargin, getMnemonic, getModel, getMultiClickThreshhold, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, isSelected, paintBorder, removeActionListener, removeChangeListener, removeItemListener, removeNotify, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setFocusPainted, setHideActionText, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setLayout, setMargin, setMnemonic, setMnemonic, setModel, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelected, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition`

    - ### Methods declared in class javax.swing.JComponent

      `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

    - ### Methods declared in class java.awt.Container

      `add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, transferFocusDownCycle, validate, validateTree`

    - ### Methods declared in class java.awt.Component

      `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### Methods declared in class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### JMenuItem

          public JMenuItem()

      Creates a `JMenuItem` with no set text or icon.

    - #### JMenuItem

          public JMenuItem​(Icon icon)

      Creates a `JMenuItem` with the specified icon.
      Parameters:
        `icon` - the icon of the `JMenuItem`

    - #### JMenuItem

          public JMenuItem​(String text)

      Creates a `JMenuItem` with the specified text.
      Parameters:
        `text` - the text of the `JMenuItem`

    - #### JMenuItem

          public JMenuItem​(Action a)

      Creates a menu item whose properties are taken from the specified `Action`.
      Parameters:
        `a` - the action of the `JMenuItem`
      Since:
        1.3

    - #### JMenuItem

          public JMenuItem​(String text,
                           Icon icon)

      Creates a `JMenuItem` with the specified text and icon.
      Parameters:
        `text` - the text of the `JMenuItem`
        `icon` - the icon of the `JMenuItem`

    - #### JMenuItem

          public JMenuItem​(String text,
                           int mnemonic)

      Creates a `JMenuItem` with the specified text and keyboard mnemonic.
      Parameters:
        `text` - the text of the `JMenuItem`
        `mnemonic` - the keyboard mnemonic for the `JMenuItem`

  - ### Method Detail

    - #### init

          protected void init​(String text,
                              Icon icon)

      Initializes the menu item with the specified text and icon.
      Overrides:
        `init` in class `AbstractButton`
      Parameters:
        `text` - the text of the `JMenuItem`
        `icon` - the icon of the `JMenuItem`

    - #### setUI

          @BeanProperty(hidden=true,
                        visualUpdate=true,
                        description="The UI object that implements the LookAndFeel.")
          public void setUI​(MenuItemUI ui)

      Sets the look and feel object that renders this component.
      Parameters:
        `ui` - the `JMenuItemUI` L&F object
      See Also:
        `UIDefaults.getUI(javax.swing.JComponent)`

    - #### updateUI

          public void updateUI()

      Resets the UI property with a value from the current look and feel.
      Overrides:
        `updateUI` in class `AbstractButton`
      See Also:
        `JComponent.updateUI()`

    - #### getUIClassID

          @BeanProperty(bound=false)
          public String getUIClassID()

      Returns the suffix used to construct the name of the L&F class used to render this component.
      Overrides:
        `getUIClassID` in class `JComponent`
      Returns:
        the string "MenuItemUI"
      See Also:
        `JComponent.getUIClassID()`, `UIDefaults.getUI(javax.swing.JComponent)`

    - #### setArmed

          @BeanProperty(bound=false,
                        hidden=true,
                        description="Mouse release will fire an action event")
          public void setArmed​(boolean b)

      Identifies the menu item as "armed". If the mouse button is released while it is over this item, the menu's action event will fire. If the mouse button is released elsewhere, the event will not fire and the menu item will be disarmed.
      Parameters:
        `b` - true to arm the menu item so it can be selected

    - #### isArmed

          public boolean isArmed()

      Returns whether the menu item is "armed".
      Returns:
        true if the menu item is armed, and it can be selected
      See Also:
        `setArmed(boolean)`

    - #### setEnabled

          @BeanProperty(preferred=true,
                        description="The enabled state of the component.")
          public void setEnabled​(boolean b)

      Enables or disables the menu item.
      Overrides:
        `setEnabled` in class `AbstractButton`
      Parameters:
        `b` - true to enable the item
      See Also:
        `Component.isEnabled()`, `Component.isLightweight()`

    - #### setAccelerator

          @BeanProperty(preferred=true,
                        description="The keystroke combination which will invoke the JMenuItem\'s actionlisteners without navigating the menu hierarchy")
          public void setAccelerator​(KeyStroke keyStroke)

      Sets the key combination which invokes the menu item's action listeners without navigating the menu hierarchy. It is the UI's responsibility to install the correct action. Note that when the keyboard accelerator is typed, it will work whether or not the menu is currently displayed.
      Parameters:
        `keyStroke` - the `KeyStroke` which will serve as an accelerator

    - #### getAccelerator

          public KeyStroke getAccelerator()

      Returns the `KeyStroke` which serves as an accelerator for the menu item.
      Returns:
        a `KeyStroke` object identifying the accelerator key

    - #### configurePropertiesFromAction

          protected void configurePropertiesFromAction​(Action a)

      Sets the properties on this button to match those in the specified `Action`. Refer to Swing Components Supporting `Action` for more details as to which properties this sets.
      Overrides:
        `configurePropertiesFromAction` in class `AbstractButton`
      Parameters:
        `a` - the `Action` from which to get the properties, or `null`
      Since:
        1.3
      See Also:
        `Action`, `AbstractButton.setAction(javax.swing.Action)`

    - #### actionPropertyChanged

          protected void actionPropertyChanged​(Action action,
                                               String propertyName)

      Updates the button's state in response to property changes in the associated action. This method is invoked from the `PropertyChangeListener` returned from `createActionPropertyChangeListener`. Subclasses do not normally need to invoke this. Subclasses that support additional `Action` properties should override this and `configurePropertiesFromAction`.

      Refer to the table at Swing Components Supporting `Action` for a list of the properties this method sets.

      Overrides:
        `actionPropertyChanged` in class `AbstractButton`
      Parameters:
        `action` - the `Action` associated with this button
        `propertyName` - the name of the property that changed
      Since:
        1.6
      See Also:
        `Action`, `AbstractButton.configurePropertiesFromAction(javax.swing.Action)`

    - #### processMouseEvent

          public void processMouseEvent​(MouseEvent e,
                                        MenuElement[] path,
                                        MenuSelectionManager manager)

      Processes a mouse event forwarded from the `MenuSelectionManager` and changes the menu selection, if necessary, by using the `MenuSelectionManager`'s API.

      Note: you do not have to forward the event to sub-components. This is done automatically by the `MenuSelectionManager`.

      Specified by:
        `processMouseEvent` in interface `MenuElement`
      Parameters:
        `e` - a `MouseEvent`
        `path` - the `MenuElement` path array
        `manager` - the `MenuSelectionManager`

    - #### processKeyEvent

          public void processKeyEvent​(KeyEvent e,
                                      MenuElement[] path,
                                      MenuSelectionManager manager)

      Processes a key event forwarded from the `MenuSelectionManager` and changes the menu selection, if necessary, by using `MenuSelectionManager`'s API.

      Note: you do not have to forward the event to sub-components. This is done automatically by the `MenuSelectionManager`.

      Specified by:
        `processKeyEvent` in interface `MenuElement`
      Parameters:
        `e` - a `KeyEvent`
        `path` - the `MenuElement` path array
        `manager` - the `MenuSelectionManager`

    - #### processMenuDragMouseEvent

          public void processMenuDragMouseEvent​(MenuDragMouseEvent e)

      Handles mouse drag in a menu.
      Parameters:
        `e` - a `MenuDragMouseEvent` object

    - #### processMenuKeyEvent

          public void processMenuKeyEvent​(MenuKeyEvent e)

      Handles a keystroke in a menu.
      Parameters:
        `e` - a `MenuKeyEvent` object

    - #### fireMenuDragMouseEntered

          protected void fireMenuDragMouseEntered​(MenuDragMouseEvent event)

      Notifies all listeners that have registered interest for notification on this event type.
      Parameters:
        `event` - a `MenuMouseDragEvent`
      See Also:
        `EventListenerList`

    - #### fireMenuDragMouseExited

          protected void fireMenuDragMouseExited​(MenuDragMouseEvent event)

      Notifies all listeners that have registered interest for notification on this event type.
      Parameters:
        `event` - a `MenuDragMouseEvent`
      See Also:
        `EventListenerList`

    - #### fireMenuDragMouseDragged

          protected void fireMenuDragMouseDragged​(MenuDragMouseEvent event)

      Notifies all listeners that have registered interest for notification on this event type.
      Parameters:
        `event` - a `MenuDragMouseEvent`
      See Also:
        `EventListenerList`

    - #### fireMenuDragMouseReleased

          protected void fireMenuDragMouseReleased​(MenuDragMouseEvent event)

      Notifies all listeners that have registered interest for notification on this event type.
      Parameters:
        `event` - a `MenuDragMouseEvent`
      See Also:
        `EventListenerList`

    - #### fireMenuKeyPressed

          protected void fireMenuKeyPressed​(MenuKeyEvent event)

      Notifies all listeners that have registered interest for notification on this event type.
      Parameters:
        `event` - a `MenuKeyEvent`
      See Also:
        `EventListenerList`

    - #### fireMenuKeyReleased

          protected void fireMenuKeyReleased​(MenuKeyEvent event)

      Notifies all listeners that have registered interest for notification on this event type.
      Parameters:
        `event` - a `MenuKeyEvent`
      See Also:
        `EventListenerList`

    - #### fireMenuKeyTyped

          protected void fireMenuKeyTyped​(MenuKeyEvent event)

      Notifies all listeners that have registered interest for notification on this event type.
      Parameters:
        `event` - a `MenuKeyEvent`
      See Also:
        `EventListenerList`

    - #### menuSelectionChanged

          public void menuSelectionChanged​(boolean isIncluded)

      Called by the `MenuSelectionManager` when the `MenuElement` is selected or unselected.
      Specified by:
        `menuSelectionChanged` in interface `MenuElement`
      Parameters:
        `isIncluded` - true if this menu item is on the part of the menu path that changed, false if this menu is part of the a menu path that changed, but this particular part of that path is still the same
      See Also:
        `MenuSelectionManager.setSelectedPath(MenuElement[])`

    - #### getSubElements

          @BeanProperty(bound=false)
          public MenuElement[] getSubElements()

      This method returns an array containing the sub-menu components for this menu component.
      Specified by:
        `getSubElements` in interface `MenuElement`
      Returns:
        an array of `MenuElement`s

    - #### getComponent

          public Component getComponent()

      Returns the `java.awt.Component` used to paint this object. The returned component will be used to convert events and detect if an event is inside a menu component.
      Specified by:
        `getComponent` in interface `MenuElement`
      Returns:
        the `Component` that paints this menu item

    - #### addMenuDragMouseListener

          public void addMenuDragMouseListener​(MenuDragMouseListener l)

      Adds a `MenuDragMouseListener` to the menu item.
      Parameters:
        `l` - the `MenuDragMouseListener` to be added

    - #### removeMenuDragMouseListener

          public void removeMenuDragMouseListener​(MenuDragMouseListener l)

      Removes a `MenuDragMouseListener` from the menu item.
      Parameters:
        `l` - the `MenuDragMouseListener` to be removed

    - #### getMenuDragMouseListeners

          @BeanProperty(bound=false)
          public MenuDragMouseListener[] getMenuDragMouseListeners()

      Returns an array of all the `MenuDragMouseListener`s added to this JMenuItem with addMenuDragMouseListener().
      Returns:
        all of the `MenuDragMouseListener`s added or an empty array if no listeners have been added
      Since:
        1.4

    - #### addMenuKeyListener

          public void addMenuKeyListener​(MenuKeyListener l)

      Adds a `MenuKeyListener` to the menu item.
      Parameters:
        `l` - the `MenuKeyListener` to be added

    - #### removeMenuKeyListener

          public void removeMenuKeyListener​(MenuKeyListener l)

      Removes a `MenuKeyListener` from the menu item.
      Parameters:
        `l` - the `MenuKeyListener` to be removed

    - #### getMenuKeyListeners

          @BeanProperty(bound=false)
          public MenuKeyListener[] getMenuKeyListeners()

      Returns an array of all the `MenuKeyListener`s added to this JMenuItem with addMenuKeyListener().
      Returns:
        all of the `MenuKeyListener`s added or an empty array if no listeners have been added
      Since:
        1.4

    - #### paramString

          protected String paramString()

      Returns a string representation of this `JMenuItem`. This method is intended to be used only for debugging purposes, and the content and format of the returned string may vary between implementations. The returned string may be empty but may not be `null`.
      Overrides:
        `paramString` in class `AbstractButton`
      Returns:
        a string representation of this `JMenuItem`

    - #### getAccessibleContext

          @BeanProperty(bound=false)
          public AccessibleContext getAccessibleContext()

      Returns the `AccessibleContext` associated with this `JMenuItem`. For `JMenuItem`s, the `AccessibleContext` takes the form of an `AccessibleJMenuItem`. A new AccessibleJMenuItme instance is created if necessary.
      Specified by:
        `getAccessibleContext` in interface `Accessible`
      Overrides:
        `getAccessibleContext` in class `Component`
      Returns:
        an `AccessibleJMenuItem` that serves as the `AccessibleContext` of this `JMenuItem`