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

## Class BasicPopupMenuUI

- java.lang.Object
- - javax.swing.plaf.ComponentUI
  - - javax.swing.plaf.PopupMenuUI
    - - javax.swing.plaf.basic.BasicPopupMenuUI

- Direct Known Subclasses:
    `SynthPopupMenuUI`

      public class BasicPopupMenuUI
      extends PopupMenuUI

  A Windows L&F implementation of PopupMenuUI. This implementation is a "combined" view/controller.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected JPopupMenu` | `popupMenu` | The instance of `JPopupMenu`.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `BasicPopupMenuUI​()` | Constructs a new instance of `BasicPopupMenuUI`.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static ComponentUI` | `createUI​(JComponent x)` | Constructs a new instance of `BasicPopupMenuUI`.
    `void` | `installDefaults​()` | Installs default properties.
    `protected void` | `installKeyboardActions​()` | Registers keyboard actions.
    `protected void` | `installListeners​()` | Registers listeners.
    `void` | `installUI​(JComponent c)` | Configures the specified component appropriately for the look and feel.
    `boolean` | `isPopupTrigger​(MouseEvent e)` | Returns whether or not the given `MouseEvent` is the popup menu trigger event for the platform
    `protected void` | `uninstallDefaults​()` | Uninstalls default properties.
    `protected void` | `uninstallKeyboardActions​()` | Unregisters keyboard actions.
    `protected void` | `uninstallListeners​()` | Unregisters listeners.
    `void` | `uninstallUI​(JComponent c)` | Reverses configuration which was done on the specified component during `installUI`.

    - ### Methods inherited from class javax.swing.plaf.ComponentUI

      `contains, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior, getMaximumSize, getMinimumSize, getPreferredSize, paint, update`

    - ### Methods inherited from class java.lang.Object

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

    - ### Methods inherited from class javax.swing.plaf.PopupMenuUI

      `getPopup`

- - ### Field Detail

    - #### popupMenu

          protected JPopupMenu popupMenu

      The instance of `JPopupMenu`.

  - ### Constructor Detail

    - #### BasicPopupMenuUI

          public BasicPopupMenuUI​()

      Constructs a new instance of `BasicPopupMenuUI`.

  - ### Method Detail

    - #### createUI

          public static ComponentUI createUI​(JComponent x)

      Constructs a new instance of `BasicPopupMenuUI`.
      Parameters:
        `x` - a component
      Returns:
        a new instance of `BasicPopupMenuUI`

    - #### installUI

          public void installUI​(JComponent c)

      Description copied from class: `ComponentUI`
      Configures the specified component appropriately for the look and feel. This method is invoked when the `ComponentUI` instance is being installed as the UI delegate on the specified component. This method should completely configure the component for the look and feel, including the following:
      1. Install default property values for color, fonts, borders, icons, opacity, etc. on the component. Whenever possible, property values initialized by the client program should not be overridden.
      2. Install a `LayoutManager` on the component if necessary.
      3. Create/add any required sub-components to the component.
      4. Create/install event listeners on the component.
      5. Create/install a `PropertyChangeListener` on the component in order to detect and respond to component property changes appropriately.
      6. Install keyboard UI (mnemonics, traversal, etc.) on the component.
      7. Initialize any appropriate instance data.
      Overrides:
        `installUI` in class `ComponentUI`
      Parameters:
        `c` - the component where this UI delegate is being installed
      See Also:
        `ComponentUI.uninstallUI(javax.swing.JComponent)`, `JComponent.setUI(javax.swing.plaf.ComponentUI)`, `JComponent.updateUI()`

    - #### installDefaults

          public void installDefaults​()

      Installs default properties.

    - #### installListeners

          protected void installListeners​()

      Registers listeners.

    - #### installKeyboardActions

          protected void installKeyboardActions​()

      Registers keyboard actions.

    - #### uninstallUI

          public void uninstallUI​(JComponent c)

      Description copied from class: `ComponentUI`
      Reverses configuration which was done on the specified component during `installUI`. This method is invoked when this `UIComponent` instance is being removed as the UI delegate for the specified component. This method should undo the configuration performed in `installUI`, being careful to leave the `JComponent` instance in a clean state (no extraneous listeners, look-and-feel-specific property objects, etc.). This should include the following:
      1. Remove any UI-set borders from the component.
      2. Remove any UI-set layout managers on the component.
      3. Remove any UI-added sub-components from the component.
      4. Remove any UI-added event/property listeners from the component.
      5. Remove any UI-installed keyboard UI from the component.
      6. Nullify any allocated instance data objects to allow for GC.
      Overrides:
        `uninstallUI` in class `ComponentUI`
      Parameters:
        `c` - the component from which this UI delegate is being removed; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
      See Also:
        `ComponentUI.installUI(javax.swing.JComponent)`, `JComponent.updateUI()`

    - #### uninstallDefaults

          protected void uninstallDefaults​()

      Uninstalls default properties.

    - #### uninstallListeners

          protected void uninstallListeners​()

      Unregisters listeners.

    - #### uninstallKeyboardActions

          protected void uninstallKeyboardActions​()

      Unregisters keyboard actions.

    - #### isPopupTrigger

          public boolean isPopupTrigger​(MouseEvent e)

      Description copied from class: `PopupMenuUI`
      Returns whether or not the given `MouseEvent` is the popup menu trigger event for the platform
      Overrides:
        `isPopupTrigger` in class `PopupMenuUI`
      Parameters:
        `e` - a `MouseEvent`
      Returns:
        true if the `MouseEvent e` is the popup menu trigger