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

`contains, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior, getMaximumSize, getMinimumSize, getPreferredSize, installUI, paint, uninstallUI`
Modifier and Type
Method
Description
`boolean`
`contains(JComponent c, int x, int y)`
Returns `true` if the specified x,y location is contained within the look and feel's defined shape of the specified component.
`Accessible`
`getAccessibleChild(JComponent c, int i)`
Returns the `i`th `Accessible` child of the object.
`int`
`getAccessibleChildrenCount(JComponent c)`
Returns the number of accessible children in the object.
`int`
`getBaseline(JComponent c, int width, int height)`
Returns the baseline.
`Component.BaselineResizeBehavior`
`getBaselineResizeBehavior(JComponent c)`
Returns an enum indicating how the baseline of the component changes as the size changes.
`Dimension`
`getMaximumSize(JComponent c)`
Returns the specified component's maximum size appropriate for the look and feel.
`Dimension`
`getMinimumSize(JComponent c)`
Returns the specified component's minimum size appropriate for the look and feel.
`Dimension`
`getPreferredSize(JComponent c)`
Returns the specified component's preferred size appropriate for the look and feel.
`void`
`installUI(JComponent c)`
Configures the specified component appropriately for the look and feel.
`void`
`paint(Graphics g, JComponent c)`
Paints the specified component appropriately for the look and feel.
`void`
`uninstallUI(JComponent c)`
Reverses configuration which was done on the specified component during `installUI`.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`String`
`toString()`
Returns a string representation of the object.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## 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(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(Graphics, JComponent)`
  - `JComponent.paintComponent(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)`