javax.swing.plaf.metal

## Class MetalComboBoxUI

- java.lang.Object
- - javax.swing.plaf.ComponentUI
  - - javax.swing.plaf.ComboBoxUI
    - - javax.swing.plaf.basic.BasicComboBoxUI
      - - javax.swing.plaf.metal.MetalComboBoxUI

-     public class MetalComboBoxUI
      extends BasicComboBoxUI

  Metal UI for JComboBox

  Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans™ has been added to the `java.beans` package. Please see `XMLEncoder`.

  See Also:
    `MetalComboBoxEditor`, `MetalComboBoxButton`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `MetalComboBoxUI.MetalComboBoxLayoutManager` | This class should be treated as a "protected" inner class.
    `class` | `MetalComboBoxUI.MetalComboPopup` | Deprecated. As of Java 2 platform v1.4.
    `class` | `MetalComboBoxUI.MetalPropertyChangeListener` | This class should be treated as a "protected" inner class.

    - ### Nested classes/interfaces inherited from class javax.swing.plaf.basic.BasicComboBoxUI

      `BasicComboBoxUI.ComboBoxLayoutManager, BasicComboBoxUI.FocusHandler, BasicComboBoxUI.ItemHandler, BasicComboBoxUI.KeyHandler, BasicComboBoxUI.ListDataHandler, BasicComboBoxUI.PropertyChangeHandler`

  - ### Field Summary

    - ### Fields inherited from class javax.swing.plaf.basic.BasicComboBoxUI

      `arrowButton, cachedMinimumSize, comboBox, currentValuePane, editor, focusListener, hasFocus, isMinimumSizeDirty, itemListener, keyListener, listBox, listDataListener, padding, popup, popupKeyListener, popupMouseListener, popupMouseMotionListener, propertyChangeListener, squareButton`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `MetalComboBoxUI()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `configureEditor()` | This protected method is implementation specific and should be private.
    `protected JButton` | `createArrowButton()` | Creates a button which will be used as the control to show or hide the popup portion of the combo box.
    `protected ComboBoxEditor` | `createEditor()` | Creates the default editor that will be used in editable combo boxes.
    `protected LayoutManager` | `createLayoutManager()` | Creates a layout manager for managing the components which make up the combo box.
    `protected ComboPopup` | `createPopup()` | Creates the popup portion of the combo box.
    `PropertyChangeListener` | `createPropertyChangeListener()` | Creates a `PropertyChangeListener` which will be added to the combo box.
    `static ComponentUI` | `createUI(JComponent c)` |
    `protected void` | `editablePropertyChanged(PropertyChangeEvent e)` | Deprecated. As of Java 2 platform v1.4.
    `int` | `getBaseline(JComponent c, int width, int height)` | Returns the baseline.
    `Dimension` | `getMinimumSize(JComponent c)` | The minimum size is the size of the display area plus insets plus the button.
    `void` | `layoutComboBox(Container parent, MetalComboBoxUI.MetalComboBoxLayoutManager manager)` |
    `void` | `paint(Graphics g, JComponent c)` | Paints the specified component appropriately for the look and feel.
    `void` | `paintCurrentValue(Graphics g, Rectangle bounds, boolean hasFocus)` | If necessary paints the currently selected item.
    `void` | `paintCurrentValueBackground(Graphics g, Rectangle bounds, boolean hasFocus)` | If necessary paints the background of the currently selected item.
    `protected void` | `removeListeners()` | Deprecated. As of Java 2 platform v1.4.
    `void` | `unconfigureEditor()` | This protected method is implementation specific and should be private.

    - ### Methods inherited from class javax.swing.plaf.basic.BasicComboBoxUI

      `addEditor, configureArrowButton, createFocusListener, createItemListener, createKeyListener, createListDataListener, createRenderer, getAccessibleChild, getAccessibleChildrenCount, getBaselineResizeBehavior, getDefaultSize, getDisplaySize, getInsets, getMaximumSize, getPreferredSize, getSizeForComponent, installComponents, installDefaults, installKeyboardActions, installListeners, installUI, isFocusTraversable, isNavigationKey, isPopupVisible, rectangleForCurrentValue, removeEditor, selectNextPossibleValue, selectPreviousPossibleValue, setPopupVisible, toggleOpenClose, unconfigureArrowButton, uninstallComponents, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, uninstallUI`

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

      `contains, update`

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

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

- - ### Constructor Detail

    - #### MetalComboBoxUI

          public MetalComboBoxUI()

  - ### Method Detail

    - #### createUI

          public static ComponentUI createUI(JComponent c)

    - #### paint

          public void paint(Graphics g,
                            JComponent c)

      Description copied from class: `ComponentUI`
      Paints the specified component appropriately for the look and feel. This method is invoked from the `ComponentUI.update` method when the specified component is being painted. Subclasses should override this method and use the specified `Graphics` object to render the content of the component.
      Overrides:
        `paint` in class `BasicComboBoxUI`
      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.update(java.awt.Graphics, javax.swing.JComponent)`

    - #### paintCurrentValue

          public void paintCurrentValue(Graphics g,
                                        Rectangle bounds,
                                        boolean hasFocus)

      If necessary paints the currently selected item.
      Overrides:
        `paintCurrentValue` in class `BasicComboBoxUI`
      Parameters:
        `g` - Graphics to paint to
        `bounds` - Region to paint current value to
        `hasFocus` - whether or not the JComboBox has focus
      Throws:
        `NullPointerException` - if any of the arguments are null.
      Since:
        1.5

    - #### paintCurrentValueBackground

          public void paintCurrentValueBackground(Graphics g,
                                                  Rectangle bounds,
                                                  boolean hasFocus)

      If necessary paints the background of the currently selected item.
      Overrides:
        `paintCurrentValueBackground` in class `BasicComboBoxUI`
      Parameters:
        `g` - Graphics to paint to
        `bounds` - Region to paint background to
        `hasFocus` - whether or not the JComboBox has focus
      Throws:
        `NullPointerException` - if any of the arguments are null.
      Since:
        1.5

    - #### getBaseline

          public int getBaseline(JComponent c,
                                 int width,
                                 int height)

      Returns the baseline.
      Overrides:
        `getBaseline` in class `BasicComboBoxUI`
      Parameters:
        `c` - `JComponent` baseline is being requested for
        `width` - the width to get the baseline for
        `height` - the height to get the baseline for
      Returns:
        baseline or a value < 0 indicating there is no reasonable baseline
      Throws:
        `NullPointerException` - if `c` is `null`
        `IllegalArgumentException` - if width or height is < 0
      Since:
        1.6
      See Also:
        `JComponent.getBaseline(int, int)`

    - #### createEditor

          protected ComboBoxEditor createEditor()

      Description copied from class: `BasicComboBoxUI`
      Creates the default editor that will be used in editable combo boxes. A default editor will be used only if an editor has not been explicitly set with `setEditor`.
      Overrides:
        `createEditor` in class `BasicComboBoxUI`
      Returns:
        a `ComboBoxEditor` used for the combo box
      See Also:
        `JComboBox.setEditor(javax.swing.ComboBoxEditor)`

    - #### createPopup

          protected ComboPopup createPopup()

      Description copied from class: `BasicComboBoxUI`
      Creates the popup portion of the combo box.
      Overrides:
        `createPopup` in class `BasicComboBoxUI`
      Returns:
        an instance of `ComboPopup`
      See Also:
        `ComboPopup`

    - #### createArrowButton

          protected JButton createArrowButton()

      Description copied from class: `BasicComboBoxUI`
      Creates a button which will be used as the control to show or hide the popup portion of the combo box.
      Overrides:
        `createArrowButton` in class `BasicComboBoxUI`
      Returns:
        a button which represents the popup control

    - #### createPropertyChangeListener

          public PropertyChangeListener createPropertyChangeListener()

      Description copied from class: `BasicComboBoxUI`
      Creates a `PropertyChangeListener` which will be added to the combo box. If this method returns null then it will not be added to the combo box.
      Overrides:
        `createPropertyChangeListener` in class `BasicComboBoxUI`
      Returns:
        an instance of a `PropertyChangeListener` or null

    - #### editablePropertyChanged

          @Deprecated
          protected void editablePropertyChanged(PropertyChangeEvent e)

      Deprecated. As of Java 2 platform v1.4.
      As of Java 2 platform v1.4 this method is no longer used. Do not call or override. All the functionality of this method is in the MetalPropertyChangeListener.

    - #### createLayoutManager

          protected LayoutManager createLayoutManager()

      Description copied from class: `BasicComboBoxUI`
      Creates a layout manager for managing the components which make up the combo box.
      Overrides:
        `createLayoutManager` in class `BasicComboBoxUI`
      Returns:
        an instance of a layout manager

    - #### layoutComboBox

          public void layoutComboBox(Container parent,
                                     MetalComboBoxUI.MetalComboBoxLayoutManager manager)

    - #### removeListeners

          @Deprecated
          protected void removeListeners()

      Deprecated. As of Java 2 platform v1.4.
      As of Java 2 platform v1.4 this method is no longer used.

    - #### configureEditor

          public void configureEditor()

      Description copied from class: `BasicComboBoxUI`
      This protected method is implementation specific and should be private. do not call or override.
      Overrides:
        `configureEditor` in class `BasicComboBoxUI`
      See Also:
        `BasicComboBoxUI.addEditor()`

    - #### unconfigureEditor

          public void unconfigureEditor()

      Description copied from class: `BasicComboBoxUI`
      This protected method is implementation specific and should be private. Do not call or override.
      Overrides:
        `unconfigureEditor` in class `BasicComboBoxUI`
      See Also:
        `BasicComboBoxUI.addEditor()`

    - #### getMinimumSize

          public Dimension getMinimumSize(JComponent c)

      Description copied from class: `BasicComboBoxUI`
      The minimum size is the size of the display area plus insets plus the button.
      Overrides:
        `getMinimumSize` in class `BasicComboBoxUI`
      Parameters:
        `c` - the component whose minimum size is being queried; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
      Returns:
        a `Dimension` object or `null`
      See Also:
        `JComponent.getMinimumSize()`, `LayoutManager.minimumLayoutSize(java.awt.Container)`, `ComponentUI.getPreferredSize(javax.swing.JComponent)`

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.