SynthTabbedPaneUI (Java Platform SE 8 )
Keywords: javax.swing.plaf.synth.SynthTabbedPaneUI class
Date: 2026-04-22

javax.swing.plaf.synth

## Class SynthTabbedPaneUI

- java.lang.Object
- - javax.swing.plaf.ComponentUI
  - - javax.swing.plaf.TabbedPaneUI
    - - javax.swing.plaf.basic.BasicTabbedPaneUI
      - - javax.swing.plaf.synth.SynthTabbedPaneUI

- All Implemented Interfaces:
    PropertyChangeListener, EventListener, SynthConstants, SynthUI, SwingConstants

      public class SynthTabbedPaneUI
      extends BasicTabbedPaneUI
      implements PropertyChangeListener, SynthUI

  Provides the Synth L&F UI delegate for `JTabbedPane`.

  Looks up the `selectedTabPadInsets` property from the Style, which represents additional insets for the selected tab.

  Since:
    1.7

- - ### Nested Class Summary

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

      `BasicTabbedPaneUI.FocusHandler, BasicTabbedPaneUI.MouseHandler, BasicTabbedPaneUI.PropertyChangeHandler, BasicTabbedPaneUI.TabbedPaneLayout, BasicTabbedPaneUI.TabSelectionHandler`

  - ### Field Summary

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

      `calcRect, contentBorderInsets, darkShadow, downKey, focus, focusListener, highlight, leftKey, lightHighlight, maxTabHeight, maxTabWidth, mouseListener, propertyChangeListener, rects, rightKey, runCount, selectedRun, selectedTabPadInsets, shadow, tabAreaInsets, tabChangeListener, tabInsets, tabPane, tabRunOverlay, tabRuns, textIconGap, upKey`

    - ### Fields inherited from interface javax.swing.plaf.synth.SynthConstants

      `DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED`

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

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | `calculateMaxTabHeight(int tabPlacement)`
    `protected int` | `calculateMaxTabWidth(int tabPlacement)`
    `protected int` | `calculateTabWidth(int tabPlacement, int tabIndex, FontMetrics metrics)`
    `protected LayoutManager` | `createLayoutManager()` Invoked by `installUI` to create a layout manager object to manage the `JTabbedPane`.
    `protected MouseListener` | `createMouseListener()` Overridden to keep track of whether the selected tab is also pressed.
    `protected JButton` | `createScrollButton(int direction)` Creates and returns a JButton that will provide the user with a way to scroll the tabs in a particular direction.
    `static ComponentUI` | `createUI(JComponent c)` Creates a new UI object for the given component.
    `protected int` | `getBaseline(int tab)` Returns the baseline for the specified tab.
    `SynthContext` | `getContext(JComponent c)` Returns the Context for the specified component.
    `protected FontMetrics` | `getFontMetrics()`
    `protected Insets` | `getTabInsets(int tabPlacement, int tabIndex)`
    `protected int` | `getTabLabelShiftX(int tabPlacement, int tabIndex, boolean isSelected)`
    `protected int` | `getTabLabelShiftY(int tabPlacement, int tabIndex, boolean isSelected)`
    `protected void` | `installDefaults()`
    `protected void` | `installListeners()`
    `void` | `paint(Graphics g, JComponent c)` Paints the specified component according to the Look and Feel.
    `protected void` | `paint(SynthContext context, Graphics g)` Paints the specified component.
    `void` | `paintBorder(SynthContext context, Graphics g, int x, int y, int w, int h)` Paints the border.
    `protected void` | `paintTabArea(Graphics g, int tabPlacement, int selectedIndex)` Paints the tabs in the tab area.
    `void` | `propertyChange(PropertyChangeEvent e)` This method gets called when a bound property is changed.
    `protected void` | `setRolloverTab(int index)` Sets the tab the mouse is currently over to `index`.
    `protected void` | `uninstallDefaults()`
    `protected void` | `uninstallListeners()`
    `void` | `update(Graphics g, JComponent c)` Notifies this UI delegate to repaint the specified component.

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

      `assureRectsCreated, calculateTabAreaHeight, calculateTabAreaWidth, calculateTabHeight, createChangeListener, createFocusListener, createPropertyChangeListener, expandTabRunsArray, getBaseline, getBaselineOffset, getBaselineResizeBehavior, getContentBorderInsets, getFocusIndex, getIconForTab, getMaximumSize, getMinimumSize, getNextTabIndex, getNextTabIndexInRun, getNextTabRun, getPreviousTabIndex, getPreviousTabIndexInRun, getPreviousTabRun, getRolloverTab, getRunForTab, getSelectedTabPadInsets, getTabAreaInsets, getTabBounds, getTabBounds, getTabRunCount, getTabRunIndent, getTabRunOffset, getTabRunOverlay, getTextViewForTab, getVisibleComponent, installComponents, installKeyboardActions, installUI, lastTabInRun, layoutLabel, navigateSelectedTab, paintContentBorder, paintContentBorderBottomEdge, paintContentBorderLeftEdge, paintContentBorderRightEdge, paintContentBorderTopEdge, paintFocusIndicator, paintIcon, paintTab, paintTabBackground, paintTabBorder, paintText, rotateInsets, selectAdjacentRunTab, selectNextTab, selectNextTabInRun, selectPreviousTab, selectPreviousTabInRun, setVisibleComponent, shouldPadTabRun, shouldRotateTabRuns, tabForCoordinate, uninstallComponents, uninstallKeyboardActions, uninstallUI`

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

      `contains, getAccessibleChild, getAccessibleChildrenCount, getPreferredSize`

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

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

- - ### Constructor Detail

    - #### SynthTabbedPaneUI

          public SynthTabbedPaneUI()

  - ### Method Detail

    - #### createUI

          public static ComponentUI createUI(JComponent c)

      Creates a new UI object for the given component.
      Parameters:
        `c` - component to create UI object for
      Returns:
        the UI object

    - #### installDefaults

          protected void installDefaults()

      Overrides:
        `installDefaults` in class `BasicTabbedPaneUI`

    - #### installListeners

          protected void installListeners()

      Overrides:
        `installListeners` in class `BasicTabbedPaneUI`

    - #### uninstallListeners

          protected void uninstallListeners()

      Overrides:
        `uninstallListeners` in class `BasicTabbedPaneUI`

    - #### uninstallDefaults

          protected void uninstallDefaults()

      Overrides:
        `uninstallDefaults` in class `BasicTabbedPaneUI`

    - #### getContext

          public SynthContext getContext(JComponent c)

      Returns the Context for the specified component.
      Specified by:
        `getContext` in interface `SynthUI`
      Parameters:
        `c` - Component requesting SynthContext.
      Returns:
        SynthContext describing component.

    - #### createScrollButton

          protected JButton createScrollButton(int direction)

      Creates and returns a JButton that will provide the user with a way to scroll the tabs in a particular direction. The returned JButton must be instance of UIResource.
      Overrides:
        `createScrollButton` in class `BasicTabbedPaneUI`
      Parameters:
        `direction` - One of the SwingConstants constants: SOUTH, NORTH, EAST or WEST
      Returns:
        Widget for user to
      See Also:
        `JTabbedPane.setTabPlacement(int)`, `SwingConstants`

    - #### propertyChange

          public void propertyChange(PropertyChangeEvent e)

      This method gets called when a bound property is changed.
      Specified by:
        `propertyChange` in interface `PropertyChangeListener`
      Parameters:
        `e` - A PropertyChangeEvent object describing the event source and the property that has changed.

    - #### createMouseListener

          protected MouseListener createMouseListener()

      Overridden to keep track of whether the selected tab is also pressed.
      Overrides:
        `createMouseListener` in class `BasicTabbedPaneUI`

    - #### getTabLabelShiftX

          protected int getTabLabelShiftX(int tabPlacement,
                                          int tabIndex,
                                          boolean isSelected)

      Overrides:
        `getTabLabelShiftX` in class `BasicTabbedPaneUI`

    - #### getTabLabelShiftY

          protected int getTabLabelShiftY(int tabPlacement,
                                          int tabIndex,
                                          boolean isSelected)

      Overrides:
        `getTabLabelShiftY` in class `BasicTabbedPaneUI`

    - #### update

          public void update(Graphics g,
                             JComponent c)

      Notifies this UI delegate to repaint the specified component. This method paints the component background, then calls the `paint(SynthContext,Graphics)` method.

      In general, this method does not need to be overridden by subclasses. All Look and Feel rendering code should reside in the `paint` method.

      Overrides:
        `update` in class `ComponentUI`
      Parameters:
        `g` - the `Graphics` object used for painting
        `c` - the component being painted
      See Also:
        `paint(SynthContext,Graphics)`

    - #### getBaseline

          protected int getBaseline(int tab)

      Returns the baseline for the specified tab.
      Overrides:
        `getBaseline` in class `BasicTabbedPaneUI`
      Parameters:
        `tab` - index of tab to get baseline for
      Returns:
        baseline or a value < 0 indicating there is no reasonable baseline

    - #### paintBorder

          public void paintBorder(SynthContext context,
                                  Graphics g,
                                  int x,
                                  int y,
                                  int w,
                                  int h)

      Paints the border.
      Specified by:
        `paintBorder` in interface `SynthUI`
      Parameters:
        `context` - a component context
        `g` - `Graphics` to paint on
        `x` - the X coordinate
        `y` - the Y coordinate
        `w` - width of the border
        `h` - height of the border

    - #### paint

          public void paint(Graphics g,
                            JComponent c)

      Paints the specified component according to the Look and Feel.

      This method is not used by Synth Look and Feel. Painting is handled by the `paint(SynthContext,Graphics)` method.

      Overrides:
        `paint` in class `BasicTabbedPaneUI`
      Parameters:
        `g` - the `Graphics` object used for painting
        `c` - the component being painted
      See Also:
        `paint(SynthContext,Graphics)`

    - #### paint

          protected void paint(SynthContext context,
                               Graphics g)

      Paints the specified component.
      Parameters:
        `context` - context for the component being painted
        `g` - the `Graphics` object used for painting
      See Also:
        `update(Graphics,JComponent)`

    - #### paintTabArea

          protected void paintTabArea(Graphics g,
                                      int tabPlacement,
                                      int selectedIndex)

      Description copied from class: `BasicTabbedPaneUI`
      Paints the tabs in the tab area. Invoked by paint(). The graphics parameter must be a valid `Graphics` object. Tab placement may be either: `JTabbedPane.TOP`, `JTabbedPane.BOTTOM`, `JTabbedPane.LEFT`, or `JTabbedPane.RIGHT`. The selected index must be a valid tabbed pane tab index (0 to tab count - 1, inclusive) or -1 if no tab is currently selected. The handling of invalid parameters is unspecified.
      Overrides:
        `paintTabArea` in class `BasicTabbedPaneUI`
      Parameters:
        `g` - the graphics object to use for rendering
        `tabPlacement` - the placement for the tabs within the JTabbedPane
        `selectedIndex` - the tab index of the selected component

    - #### setRolloverTab

          protected void setRolloverTab(int index)

      Sets the tab the mouse is currently over to `index`. `index` will be -1 if the mouse is no longer over any tab. No checking is done to ensure the passed in index identifies a valid tab.
      Overrides:
        `setRolloverTab` in class `BasicTabbedPaneUI`
      Parameters:
        `index` - Index of the tab the mouse is over.

    - #### calculateMaxTabHeight

          protected int calculateMaxTabHeight(int tabPlacement)

      Overrides:
        `calculateMaxTabHeight` in class `BasicTabbedPaneUI`

    - #### calculateTabWidth

          protected int calculateTabWidth(int tabPlacement,
                                          int tabIndex,
                                          FontMetrics metrics)

      Overrides:
        `calculateTabWidth` in class `BasicTabbedPaneUI`

    - #### calculateMaxTabWidth

          protected int calculateMaxTabWidth(int tabPlacement)

      Overrides:
        `calculateMaxTabWidth` in class `BasicTabbedPaneUI`

    - #### getTabInsets

          protected Insets getTabInsets(int tabPlacement,
                                        int tabIndex)

      Overrides:
        `getTabInsets` in class `BasicTabbedPaneUI`

    - #### getFontMetrics

          protected FontMetrics getFontMetrics()

      Overrides:
        `getFontMetrics` in class `BasicTabbedPaneUI`

    - #### createLayoutManager

          protected LayoutManager createLayoutManager()

      Invoked by `installUI` to create a layout manager object to manage the `JTabbedPane`. Overridden to create a TabbedPaneLayout subclass which takes into account tabOverlap.
      Overrides:
        `createLayoutManager` in class `BasicTabbedPaneUI`
      Returns:
        a layout manager object
      See Also:
        `BasicTabbedPaneUI.TabbedPaneLayout`, `JTabbedPane.getTabLayoutPolicy()`

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.