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`
Deprecated.

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

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