BasicToolBarUI (Java Platform SE 8 )
Keywords: javax.swing.plaf.basic.BasicToolBarUI class
Date: 2026-07-22

javax.swing.plaf.basic

## Class BasicToolBarUI

- java.lang.Object
- - javax.swing.plaf.ComponentUI
  - - javax.swing.plaf.ToolBarUI
    - - javax.swing.plaf.basic.BasicToolBarUI

- All Implemented Interfaces:
    SwingConstants
  Direct Known Subclasses:
    MetalToolBarUI, SynthToolBarUI

      public class BasicToolBarUI
      extends ToolBarUI
      implements SwingConstants

  A Basic L&F implementation of ToolBarUI. This implementation is a "combined" view/controller.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `class` | `BasicToolBarUI.DockingListener` This class should be treated as a "protected" inner class.
    `protected class` | `BasicToolBarUI.DragWindow`
    `protected class` | `BasicToolBarUI.FrameListener`
    `protected class` | `BasicToolBarUI.PropertyListener`
    `protected class` | `BasicToolBarUI.ToolBarContListener`
    `protected class` | `BasicToolBarUI.ToolBarFocusListener`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected String` | `constraintBeforeFloating`
    `protected Color` | `dockingBorderColor`
    `protected Color` | `dockingColor`
    `protected MouseInputListener` | `dockingListener`
    `protected KeyStroke` | `downKey` Deprecated. As of Java 2 platform v1.3.
    `protected BasicToolBarUI.DragWindow` | `dragWindow`
    `protected Color` | `floatingBorderColor`
    `protected Color` | `floatingColor`
    `protected int` | `focusedCompIndex`
    `protected KeyStroke` | `leftKey` Deprecated. As of Java 2 platform v1.3.
    `protected PropertyChangeListener` | `propertyListener`
    `protected KeyStroke` | `rightKey` Deprecated. As of Java 2 platform v1.3.
    `protected JToolBar` | `toolBar`
    `protected ContainerListener` | `toolBarContListener`
    `protected FocusListener` | `toolBarFocusListener`
    `protected KeyStroke` | `upKey` Deprecated. As of Java 2 platform v1.3.

    - ### Fields inherited from interface javax.swing.SwingConstants

      `BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BasicToolBarUI()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `canDock(Component c, Point p)`
    `protected MouseInputListener` | `createDockingListener()`
    `protected BasicToolBarUI.DragWindow` | `createDragWindow(JToolBar toolbar)`
    `protected JFrame` | `createFloatingFrame(JToolBar toolbar)` No longer used, use BasicToolBarUI.createFloatingWindow(JToolBar)
    `protected RootPaneContainer` | `createFloatingWindow(JToolBar toolbar)` Creates a window which contains the toolbar after it has been dragged out from its container
    `protected WindowListener` | `createFrameListener()`
    `protected Border` | `createNonRolloverBorder()` Creates the non rollover border for toolbar components.
    `protected PropertyChangeListener` | `createPropertyListener()`
    `protected Border` | `createRolloverBorder()` Creates a rollover border for toolbar components.
    `protected ContainerListener` | `createToolBarContListener()`
    `protected FocusListener` | `createToolBarFocusListener()`
    `static ComponentUI` | `createUI(JComponent c)`
    `protected void` | `dragTo(Point position, Point origin)`
    `protected void` | `floatAt(Point position, Point origin)`
    `Color` | `getDockingColor()` Gets the color displayed when over a docking area
    `Color` | `getFloatingColor()` Gets the color displayed when over a floating area
    `protected Border` | `getNonRolloverBorder(AbstractButton b)` Returns a non-rollover border for the button.
    `protected Border` | `getRolloverBorder(AbstractButton b)` Returns a rollover border for the button.
    `protected void` | `installComponents()`
    `protected void` | `installDefaults()`
    `protected void` | `installKeyboardActions()`
    `protected void` | `installListeners()`
    `protected void` | `installNonRolloverBorders(JComponent c)` Installs non-rollover borders on all the child components of the JComponent.
    `protected void` | `installNormalBorders(JComponent c)` Installs normal borders on all the child components of the JComponent.
    `protected void` | `installRolloverBorders(JComponent c)` Installs rollover borders on all the child components of the JComponent.
    `void` | `installUI(JComponent c)` Configures the specified component appropriately for the look and feel.
    `boolean` | `isFloating()`
    `boolean` | `isRolloverBorders()` Returns a flag to determine whether rollover button borders are enabled.
    `protected void` | `navigateFocusedComp(int direction)`
    `protected void` | `paintDragWindow(Graphics g)` Paints the contents of the window used for dragging.
    `protected void` | `setBorderToNonRollover(Component c)` Sets the border of the component to have a non-rollover border which was created by the `createNonRolloverBorder()` method.
    `protected void` | `setBorderToNormal(Component c)` Sets the border of the component to have a normal border.
    `protected void` | `setBorderToRollover(Component c)` Sets the border of the component to have a rollover border which was created by the `createRolloverBorder()` method.
    `void` | `setDockingColor(Color c)` Sets the color displayed when over a docking area
    `void` | `setFloating(boolean b, Point p)`
    `void` | `setFloatingColor(Color c)` Sets the color displayed when over a floating area
    `void` | `setFloatingLocation(int x, int y)`
    `void` | `setOrientation(int orientation)`
    `void` | `setRolloverBorders(boolean rollover)` Sets the flag for enabling rollover borders on the toolbar and it will also install the appropriate border depending on the state of the flag.
    `protected void` | `uninstallComponents()`
    `protected void` | `uninstallDefaults()`
    `protected void` | `uninstallKeyboardActions()`
    `protected void` | `uninstallListeners()`
    `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`

- - ### Field Detail

    - #### toolBar

          protected JToolBar toolBar

    - #### dragWindow

          protected BasicToolBarUI.DragWindow dragWindow

    - #### focusedCompIndex

          protected int focusedCompIndex

    - #### dockingColor

          protected Color dockingColor

    - #### floatingColor

          protected Color floatingColor

    - #### dockingBorderColor

          protected Color dockingBorderColor

    - #### floatingBorderColor

          protected Color floatingBorderColor

    - #### dockingListener

          protected MouseInputListener dockingListener

    - #### propertyListener

          protected PropertyChangeListener propertyListener

    - #### toolBarContListener

          protected ContainerListener toolBarContListener

    - #### toolBarFocusListener

          protected FocusListener toolBarFocusListener

    - #### constraintBeforeFloating

          protected String constraintBeforeFloating

    - #### upKey

          @Deprecated
          protected KeyStroke upKey

      Deprecated. As of Java 2 platform v1.3.
      As of Java 2 platform v1.3 this previously undocumented field is no longer used. Key bindings are now defined by the LookAndFeel, please refer to the key bindings specification for further details.

    - #### downKey

          @Deprecated
          protected KeyStroke downKey

      Deprecated. As of Java 2 platform v1.3.
      As of Java 2 platform v1.3 this previously undocumented field is no longer used. Key bindings are now defined by the LookAndFeel, please refer to the key bindings specification for further details.

    - #### leftKey

          @Deprecated
          protected KeyStroke leftKey

      Deprecated. As of Java 2 platform v1.3.
      As of Java 2 platform v1.3 this previously undocumented field is no longer used. Key bindings are now defined by the LookAndFeel, please refer to the key bindings specification for further details.

    - #### rightKey

          @Deprecated
          protected KeyStroke rightKey

      Deprecated. As of Java 2 platform v1.3.
      As of Java 2 platform v1.3 this previously undocumented field is no longer used. Key bindings are now defined by the LookAndFeel, please refer to the key bindings specification for further details.

  - ### Constructor Detail

    - #### BasicToolBarUI

          public BasicToolBarUI()

  - ### Method Detail

    - #### createUI

          public static ComponentUI createUI(JComponent c)

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

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

    - #### installDefaults

          protected void installDefaults()

    - #### uninstallDefaults

          protected void uninstallDefaults()

    - #### installComponents

          protected void installComponents()

    - #### uninstallComponents

          protected void uninstallComponents()

    - #### installListeners

          protected void installListeners()

    - #### uninstallListeners

          protected void uninstallListeners()

    - #### installKeyboardActions

          protected void installKeyboardActions()

    - #### uninstallKeyboardActions

          protected void uninstallKeyboardActions()

    - #### navigateFocusedComp

          protected void navigateFocusedComp(int direction)

    - #### createRolloverBorder

          protected Border createRolloverBorder()

      Creates a rollover border for toolbar components. The rollover border will be installed if rollover borders are enabled.

      Override this method to provide an alternate rollover border.

      Since:
        1.4

    - #### createNonRolloverBorder

          protected Border createNonRolloverBorder()

      Creates the non rollover border for toolbar components. This border will be installed as the border for components added to the toolbar if rollover borders are not enabled.

      Override this method to provide an alternate rollover border.

      Since:
        1.4

    - #### createFloatingFrame

          protected JFrame createFloatingFrame(JToolBar toolbar)

      No longer used, use BasicToolBarUI.createFloatingWindow(JToolBar)
      See Also:
        `createFloatingWindow(javax.swing.JToolBar)`

    - #### createFloatingWindow

          protected RootPaneContainer createFloatingWindow(JToolBar toolbar)

      Creates a window which contains the toolbar after it has been dragged out from its container
      Returns:
        a `RootPaneContainer` object, containing the toolbar.
      Since:
        1.4

    - #### createDragWindow

          protected BasicToolBarUI.DragWindow createDragWindow(JToolBar toolbar)

    - #### isRolloverBorders

          public boolean isRolloverBorders()

      Returns a flag to determine whether rollover button borders are enabled.
      Returns:
        true if rollover borders are enabled; false otherwise
      Since:
        1.4
      See Also:
        `setRolloverBorders(boolean)`

    - #### setRolloverBorders

          public void setRolloverBorders(boolean rollover)

      Sets the flag for enabling rollover borders on the toolbar and it will also install the appropriate border depending on the state of the flag.
      Parameters:
        `rollover` - if true, rollover borders are installed. Otherwise non-rollover borders are installed
      Since:
        1.4
      See Also:
        `isRolloverBorders()`

    - #### installRolloverBorders

          protected void installRolloverBorders(JComponent c)

      Installs rollover borders on all the child components of the JComponent.

      This is a convenience method to call `setBorderToRollover` for each child component.

      Parameters:
        `c` - container which holds the child components (usually a JToolBar)
      Since:
        1.4
      See Also:
        `setBorderToRollover(java.awt.Component)`

    - #### installNonRolloverBorders

          protected void installNonRolloverBorders(JComponent c)

      Installs non-rollover borders on all the child components of the JComponent. A non-rollover border is the border that is installed on the child component while it is in the toolbar.

      This is a convenience method to call `setBorderToNonRollover` for each child component.

      Parameters:
        `c` - container which holds the child components (usually a JToolBar)
      Since:
        1.4
      See Also:
        `setBorderToNonRollover(java.awt.Component)`

    - #### installNormalBorders

          protected void installNormalBorders(JComponent c)

      Installs normal borders on all the child components of the JComponent. A normal border is the original border that was installed on the child component before it was added to the toolbar.

      This is a convenience method to call `setBorderNormal` for each child component.

      Parameters:
        `c` - container which holds the child components (usually a JToolBar)
      Since:
        1.4
      See Also:
        `setBorderToNonRollover(java.awt.Component)`

    - #### setBorderToRollover

          protected void setBorderToRollover(Component c)

      Sets the border of the component to have a rollover border which was created by the `createRolloverBorder()` method.
      Parameters:
        `c` - component which will have a rollover border installed
      Since:
        1.4
      See Also:
        `createRolloverBorder()`

    - #### getRolloverBorder

          protected Border getRolloverBorder(AbstractButton b)

      Returns a rollover border for the button.
      Parameters:
        `b` - the button to calculate the rollover border for
      Returns:
        the rollover border
      Since:
        1.6
      See Also:
        `setBorderToRollover(java.awt.Component)`

    - #### setBorderToNonRollover

          protected void setBorderToNonRollover(Component c)

      Sets the border of the component to have a non-rollover border which was created by the `createNonRolloverBorder()` method.
      Parameters:
        `c` - component which will have a non-rollover border installed
      Since:
        1.4
      See Also:
        `createNonRolloverBorder()`

    - #### getNonRolloverBorder

          protected Border getNonRolloverBorder(AbstractButton b)

      Returns a non-rollover border for the button.
      Parameters:
        `b` - the button to calculate the non-rollover border for
      Returns:
        the non-rollover border
      Since:
        1.6
      See Also:
        `setBorderToNonRollover(java.awt.Component)`

    - #### setBorderToNormal

          protected void setBorderToNormal(Component c)

      Sets the border of the component to have a normal border. A normal border is the original border that was installed on the child component before it was added to the toolbar.
      Parameters:
        `c` - component which will have a normal border re-installed
      Since:
        1.4
      See Also:
        `createNonRolloverBorder()`

    - #### setFloatingLocation

          public void setFloatingLocation(int x,
                                          int y)

    - #### isFloating

          public boolean isFloating()

    - #### setFloating

          public void setFloating(boolean b,
                                  Point p)

    - #### setOrientation

          public void setOrientation(int orientation)

    - #### getDockingColor

          public Color getDockingColor()

      Gets the color displayed when over a docking area

    - #### setDockingColor

          public void setDockingColor(Color c)

      Sets the color displayed when over a docking area

    - #### getFloatingColor

          public Color getFloatingColor()

      Gets the color displayed when over a floating area

    - #### setFloatingColor

          public void setFloatingColor(Color c)

      Sets the color displayed when over a floating area

    - #### canDock

          public boolean canDock(Component c,
                                 Point p)

    - #### dragTo

          protected void dragTo(Point position,
                                Point origin)

    - #### floatAt

          protected void floatAt(Point position,
                                 Point origin)

    - #### createToolBarContListener

          protected ContainerListener createToolBarContListener()

    - #### createToolBarFocusListener

          protected FocusListener createToolBarFocusListener()

    - #### createPropertyListener

          protected PropertyChangeListener createPropertyListener()

    - #### createDockingListener

          protected MouseInputListener createDockingListener()

    - #### createFrameListener

          protected WindowListener createFrameListener()

    - #### paintDragWindow

          protected void paintDragWindow(Graphics g)

      Paints the contents of the window used for dragging.
      Parameters:
        `g` - Graphics to paint to.
      Throws:
        `NullPointerException` - is `g` is null
      Since:
        1.5

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.