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

# 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`
  Deprecated, for removal: This API element is subject to removal in a future version.

- ## 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()`
  Constructs a `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)`
  Registers the subcomponents of the menu.
  `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()
    Constructs a `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)
    Registers the subcomponents of the menu.
    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)`