Class PlasticComboBoxUI


public class PlasticComboBoxUI extends MetalComboBoxUI
The JGoodies Plastic Look and Feel implementation of ComboBoxUI. Has the same height as text fields - unless you change the renderer.

Also, this class offers to use the combo's popup prototype display value to compute the popup menu width. This is an optional feature of the JGoodies Plastic L&fs implemented via a client property key.

Version:
$Revision: 1.19 $
See Also:
  • Field Details

    • CELL_EDITOR_KEY

      static final String CELL_EDITOR_KEY
      See Also:
    • PHANTOM

      private static final JTextField PHANTOM
      Used to determine the minimum height of a text field, which in turn is used to answer the combobox's minimum height.
    • phantomLafClass

      private static Class phantomLafClass
      Different Plastic L&fs may need different phantom UIs. Therefore we store the LookAndFeel class and update the phantom UI whenever the Look&Feel changes.
    • tableCellEditor

      private boolean tableCellEditor
    • propertyChangeListener

      private PropertyChangeListener propertyChangeListener
  • Constructor Details

    • PlasticComboBoxUI

      public PlasticComboBoxUI()
  • Method Details

    • createUI

      public static ComponentUI createUI(JComponent b)
    • ensurePhantomHasPlasticUI

      private static void ensurePhantomHasPlasticUI()
      Ensures that the phantom text field has a Plastic text field UI.
    • installUI

      public void installUI(JComponent c)
      Overrides:
      installUI in class BasicComboBoxUI
    • installListeners

      protected void installListeners()
      Overrides:
      installListeners in class BasicComboBoxUI
    • uninstallListeners

      protected void uninstallListeners()
      Overrides:
      uninstallListeners in class BasicComboBoxUI
    • createArrowButton

      protected JButton createArrowButton()
      Creates and answers the arrow button that is to be used in the combo box.

      Overridden to use a button that can have a pseudo 3D effect.

      Overrides:
      createArrowButton in class MetalComboBoxUI
    • createEditor

      protected ComboBoxEditor createEditor()
      Creates the editor that is to be used in editable combo boxes. This method only gets called if a custom editor has not already been installed in the JComboBox.
      Overrides:
      createEditor in class MetalComboBoxUI
    • createLayoutManager

      protected LayoutManager createLayoutManager()
      Creates a layout manager for managing the components which make up the combo box.

      Overriden to use a layout that has a fixed width arrow button.

      Overrides:
      createLayoutManager in class MetalComboBoxUI
      Returns:
      an instance of a layout manager
    • createPopup

      protected ComboPopup createPopup()
      Overrides:
      createPopup in class MetalComboBoxUI
    • createRenderer

      protected ListCellRenderer createRenderer()
      Creates the default renderer that will be used in a non-editiable combo box. A default renderer will used only if a renderer has not been explicitly set with setRenderer.

      This method differs from the superclass implementation in that it uses an empty border with wider left and right margins of 2 pixels instead of 1.

      Overrides:
      createRenderer in class BasicComboBoxUI
      Returns:
      a ListCellRender used for the combo box
      See Also:
    • getMinimumSize

      public Dimension getMinimumSize(JComponent c)
      The minumum size is the size of the display area plus insets plus the button.
      Overrides:
      getMinimumSize in class MetalComboBoxUI
    • getPreferredSize

      public Dimension getPreferredSize(JComponent c)
      Delegates to #getMinimumSize(Component). Overridden to return the same result in JDK 1.5 as in JDK 1.4.
      Overrides:
      getPreferredSize in class BasicComboBoxUI
    • rectangleForCurrentValue

      protected Rectangle rectangleForCurrentValue()
      Returns the area that is reserved for drawing the currently selected item.
      Overrides:
      rectangleForCurrentValue in class BasicComboBoxUI
    • update

      public void update(Graphics g, JComponent c)
      Overrides:
      update in class ComponentUI
    • isToolBarComboBox

      protected boolean isToolBarComboBox(JComponent c)
      Checks and answers if this combo is in a tool bar.
      Parameters:
      c - the component to check
      Returns:
      true if in tool bar, false otherwise
    • getEditableButtonWidth

      static int getEditableButtonWidth()
      Computes and returns the width of the arrow button in editable state. The perceived width shall be equal to the width of a scroll bar. Therefore we subtract a pixel that is perceived as part of the arrow button but that is painted by the editor's border.
      Returns:
      the width of the arrow button in editable state
    • isTableCellEditor

      private boolean isTableCellEditor()
      Checks and answers if this UI's combo has a client property that indicates that the combo is used as a table cell editor.
      Returns:
      true if the table cell editor client property is set to Boolean.TRUE, false otherwise
    • createPropertyChangeListener

      public PropertyChangeListener createPropertyChangeListener()
      Overrides:
      createPropertyChangeListener in class MetalComboBoxUI