BasicMenuItemUI (Java SE 13 & JDK 13 )
Description: declaration: module: java.desktop, package: javax.swing.plaf.basic, class: BasicMenuItemUI
Keywords: javax.swing.plaf.basic.BasicMenuItemUI class

Module java.desktop
Package javax.swing.plaf.basic

# Class BasicMenuItemUI

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.ButtonUI
javax.swing.plaf.MenuItemUI
javax.swing.plaf.basic.BasicMenuItemUI

Direct Known Subclasses:
  `BasicCheckBoxMenuItemUI`, `BasicMenuUI`, `BasicRadioButtonMenuItemUI`, `SynthMenuItemUI`

    public class BasicMenuItemUI
    extends MenuItemUI

BasicMenuItem implementation

- ## Nested Class Summary

  Nested Classes
  Modifier and Type | Class | Description
  --- | --- | ---
  `protected class` | `BasicMenuItemUI.MouseInputHandler` | Mouse input handler

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `protected String` | `acceleratorDelimiter` | Accelerator delimiter string, such as `'+'` in `'Ctrl+C'`.
  `protected Font` | `acceleratorFont` | The accelerator font.
  `protected Color` | `acceleratorForeground` | The color of the accelerator foreground.
  `protected Color` | `acceleratorSelectionForeground` | The color of the accelerator selection.
  `protected Icon` | `arrowIcon` | The arrow icon.
  `protected Icon` | `checkIcon` | The check icon.
  `protected int` | `defaultTextIconGap` | The gap between the text and the icon.
  `protected Color` | `disabledForeground` | The color of the disabled foreground.
  `protected MenuDragMouseListener` | `menuDragMouseListener` | The instance of `MenuDragMouseListener`.
  `protected JMenuItem` | `menuItem` | The instance of `JMenuItem`.
  `protected MenuKeyListener` | `menuKeyListener` | The instance of `MenuKeyListener`.
  `protected MouseInputListener` | `mouseInputListener` | The instance of `MouseInputListener`.
  `protected boolean` | `oldBorderPainted` | The value represents if the old border is painted.
  `protected PropertyChangeListener` | `propertyChangeListener` | `PropertyChangeListener` returned from `createPropertyChangeListener`.
  `protected Color` | `selectionBackground` | The color of the selection background.
  `protected Color` | `selectionForeground` | The color of the selection foreground.

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `BasicMenuItemUI()` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `protected MenuDragMouseListener` | `createMenuDragMouseListener​(JComponent c)` | Returns an instance of `MenuDragMouseListener`.
  `protected MenuKeyListener` | `createMenuKeyListener​(JComponent c)` | Returns an instance of `MenuKeyListener`.
  `protected MouseInputListener` | `createMouseInputListener​(JComponent c)` | Returns an instance of `MouseInputListener`.
  `protected PropertyChangeListener` | `createPropertyChangeListener​(JComponent c)` | Creates a `PropertyChangeListener` which will be added to the menu item.
  `static ComponentUI` | `createUI​(JComponent c)` | Returns a new instance of `BasicMenuItemUI`.
  `protected void` | `doClick​(MenuSelectionManager msm)` | Call this method when a menu item is to be activated.
  `MenuElement[]` | `getPath()` | Returns a menu element path.
  `protected Dimension` | `getPreferredMenuItemSize​(JComponent c, Icon checkIcon, Icon arrowIcon, int defaultTextIconGap)` | Returns the preferred size of a menu item.
  `protected String` | `getPropertyPrefix()` | Returns a property prefix.
  `protected void` | `installComponents​(JMenuItem menuItem)` |
  `protected void` | `installDefaults()` | Installs default properties.
  `protected void` | `installKeyboardActions()` | Registers keyboard action.
  `protected void` | `installListeners()` | Registers listeners.
  `protected void` | `paintBackground​(Graphics g, JMenuItem menuItem, Color bgColor)` | Draws the background of the menu item.
  `protected void` | `paintMenuItem​(Graphics g, JComponent c, Icon checkIcon, Icon arrowIcon, Color background, Color foreground, int defaultTextIconGap)` | Paints a menu item.
  `protected void` | `paintText​(Graphics g, JMenuItem menuItem, Rectangle textRect, String text)` | Renders the text of the current menu item.
  `protected void` | `uninstallComponents​(JMenuItem menuItem)` | Unregisters components.
  `protected void` | `uninstallDefaults()` | Uninstalls default properties.
  `protected void` | `uninstallKeyboardActions()` | Unregisters keyboard actions.
  `protected void` | `uninstallListeners()` | Unregisters listeners.
  `void` | `update​(Graphics g, JComponent c)` | We draw the background in paintMenuItem() so override update (which fills the background of opaque components by default) to just call paint().

  ### Methods declared in class javax.swing.plaf.ComponentUI

  `contains, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior, getMaximumSize, getMinimumSize, getPreferredSize, installUI, paint, uninstallUI`

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

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

- ## Field Details

  - ### menuItem

    protected JMenuItem menuItem
    The instance of `JMenuItem`.

  - ### selectionBackground

    protected Color selectionBackground
    The color of the selection background.

  - ### selectionForeground

    protected Color selectionForeground
    The color of the selection foreground.

  - ### disabledForeground

    protected Color disabledForeground
    The color of the disabled foreground.

  - ### acceleratorForeground

    protected Color acceleratorForeground
    The color of the accelerator foreground.

  - ### acceleratorSelectionForeground

    protected Color acceleratorSelectionForeground
    The color of the accelerator selection.

  - ### acceleratorDelimiter

    protected String acceleratorDelimiter
    Accelerator delimiter string, such as `'+'` in `'Ctrl+C'`.
    Since:
      1.7

  - ### defaultTextIconGap

    protected int defaultTextIconGap
    The gap between the text and the icon.

  - ### acceleratorFont

    protected Font acceleratorFont
    The accelerator font.

  - ### mouseInputListener

    protected MouseInputListener mouseInputListener
    The instance of `MouseInputListener`.

  - ### menuDragMouseListener

    protected MenuDragMouseListener menuDragMouseListener
    The instance of `MenuDragMouseListener`.

  - ### menuKeyListener

    protected MenuKeyListener menuKeyListener
    The instance of `MenuKeyListener`.

  - ### propertyChangeListener

    protected PropertyChangeListener propertyChangeListener
    `PropertyChangeListener` returned from `createPropertyChangeListener`. You should not need to access this field, rather if you want to customize the `PropertyChangeListener` override `createPropertyChangeListener`.
    Since:
      1.6
    See Also:
      `createPropertyChangeListener(javax.swing.JComponent)`

  - ### arrowIcon

    protected Icon arrowIcon
    The arrow icon.

  - ### checkIcon

    protected Icon checkIcon
    The check icon.

  - ### oldBorderPainted

    protected boolean oldBorderPainted
    The value represents if the old border is painted.

- ## Constructor Details

  - ### BasicMenuItemUI

    public BasicMenuItemUI()

- ## Method Details

  - ### createUI

    public static ComponentUI createUI​(JComponent c)
    Returns a new instance of `BasicMenuItemUI`.
    Parameters:
      `c` - a component
    Returns:
      a new instance of `BasicMenuItemUI`

  - ### installDefaults

    protected void installDefaults()
    Installs default properties.

  - ### installComponents

    protected void installComponents​(JMenuItem menuItem)
    Parameters:
      `menuItem` - a menu item
    Since:
      1.3

  - ### getPropertyPrefix

    protected String getPropertyPrefix()
    Returns a property prefix.
    Returns:
      a property prefix

  - ### installListeners

    protected void installListeners()
    Registers listeners.

  - ### installKeyboardActions

    protected void installKeyboardActions()
    Registers keyboard action.

  - ### uninstallDefaults

    protected void uninstallDefaults()
    Uninstalls default properties.

  - ### uninstallComponents

    protected void uninstallComponents​(JMenuItem menuItem)
    Unregisters components.
    Parameters:
      `menuItem` - a menu item
    Since:
      1.3

  - ### uninstallListeners

    protected void uninstallListeners()
    Unregisters listeners.

  - ### uninstallKeyboardActions

    protected void uninstallKeyboardActions()
    Unregisters keyboard actions.

  - ### createMouseInputListener

    protected MouseInputListener createMouseInputListener​(JComponent c)
    Returns an instance of `MouseInputListener`.
    Parameters:
      `c` - a component
    Returns:
      an instance of `MouseInputListener`

  - ### createMenuDragMouseListener

    protected MenuDragMouseListener createMenuDragMouseListener​(JComponent c)
    Returns an instance of `MenuDragMouseListener`.
    Parameters:
      `c` - a component
    Returns:
      an instance of `MenuDragMouseListener`

  - ### createMenuKeyListener

    protected MenuKeyListener createMenuKeyListener​(JComponent c)
    Returns an instance of `MenuKeyListener`.
    Parameters:
      `c` - a component
    Returns:
      an instance of `MenuKeyListener`

  - ### createPropertyChangeListener

    protected PropertyChangeListener createPropertyChangeListener​(JComponent c)
    Creates a `PropertyChangeListener` which will be added to the menu item. If this method returns null then it will not be added to the menu item.
    Parameters:
      `c` - a component
    Returns:
      an instance of a `PropertyChangeListener` or null
    Since:
      1.6

  - ### getPreferredMenuItemSize

    protected Dimension getPreferredMenuItemSize​(JComponent c, Icon checkIcon, Icon arrowIcon, int defaultTextIconGap)
    Returns the preferred size of a menu item.
    Parameters:
      `c` - a component
      `checkIcon` - a check icon
      `arrowIcon` - an arrow icon
      `defaultTextIconGap` - a gap between a text and an icon
    Returns:
      the preferred size of a menu item

  - ### update

    public void update​(Graphics g, JComponent c)
    We draw the background in paintMenuItem() so override update (which fills the background of opaque components by default) to just call paint().
    Overrides:
      `update` in class `ComponentUI`
    Parameters:
      `g` - the `Graphics` context in which to paint
      `c` - the component being painted; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
    See Also:
      `ComponentUI.paint(java.awt.Graphics, javax.swing.JComponent)`, `JComponent.paintComponent(java.awt.Graphics)`

  - ### paintMenuItem

    protected void paintMenuItem​(Graphics g, JComponent c, Icon checkIcon, Icon arrowIcon, Color background, Color foreground, int defaultTextIconGap)
    Paints a menu item.
    Parameters:
      `g` - an instance of `Graphics`
      `c` - a component
      `checkIcon` - a check icon
      `arrowIcon` - an arrow icon
      `background` - a background color
      `foreground` - a foreground color
      `defaultTextIconGap` - a gap between a text and an icon

  - ### paintBackground

    protected void paintBackground​(Graphics g, JMenuItem menuItem, Color bgColor)
    Draws the background of the menu item.
    Parameters:
      `g` - the paint graphics
      `menuItem` - menu item to be painted
      `bgColor` - selection background color
    Since:
      1.4

  - ### paintText

    protected void paintText​(Graphics g, JMenuItem menuItem, Rectangle textRect, String text)
    Renders the text of the current menu item.
    Parameters:
      `g` - graphics context
      `menuItem` - menu item to render
      `textRect` - bounding rectangle for rendering the text
      `text` - string to render
    Since:
      1.4

  - ### getPath

    public MenuElement[] getPath()
    Returns a menu element path.
    Returns:
      a menu element path

  - ### doClick

    protected void doClick​(MenuSelectionManager msm)
    Call this method when a menu item is to be activated. This method handles some of the details of menu item activation such as clearing the selected path and messaging the JMenuItem's doClick() method.
    Parameters:
      `msm` - A MenuSelectionManager. The visual feedback and internal bookkeeping tasks are delegated to this MenuSelectionManager. If `null` is passed as this argument, the `MenuSelectionManager.defaultManager` is used.
    Since:
      1.4
    See Also:
      `MenuSelectionManager`, `AbstractButton.doClick(int)`