BasicMenuItemUI (Java SE 10 & JDK 10 )
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

    All Methods Static Methods Instance Methods Concrete Methods
    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 Detail

    - #### 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 Detail

    - #### BasicMenuItemUI

          public BasicMenuItemUI()

  - ### Method Detail

    - #### 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)`