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

## Class BasicTabbedPaneUI

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

- All Implemented Interfaces:
    `SwingConstants`
  Direct Known Subclasses:
    `MetalTabbedPaneUI`, `SynthTabbedPaneUI`

      public class BasicTabbedPaneUI
      extends TabbedPaneUI
      implements SwingConstants

  A Basic L&F implementation of TabbedPaneUI.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `BasicTabbedPaneUI.FocusHandler` | This class should be treated as a "protected" inner class.
    `class` | `BasicTabbedPaneUI.MouseHandler` | This class should be treated as a "protected" inner class.
    `class` | `BasicTabbedPaneUI.PropertyChangeHandler` | This class should be treated as a "protected" inner class.
    `class` | `BasicTabbedPaneUI.TabbedPaneLayout` | This class should be treated as a "protected" inner class.
    `class` | `BasicTabbedPaneUI.TabSelectionHandler` | This class should be treated as a "protected" inner class.

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Rectangle` | `calcRect` | A rectangle used for general layout calculations in order to avoid constructing many new Rectangles on the fly.
    `protected Insets` | `contentBorderInsets` | Content border insets
    `protected Color` | `darkShadow` | Dark shadow color
    `protected KeyStroke` | `downKey` | Deprecated. As of Java 2 platform v1.3.
    `protected Color` | `focus` | Focus color
    `protected FocusListener` | `focusListener` | Focus change listener
    `protected Color` | `highlight` | Highlight color
    `protected KeyStroke` | `leftKey` | Deprecated. As of Java 2 platform v1.3.
    `protected Color` | `lightHighlight` | Light highlight color
    `protected int` | `maxTabHeight` | Maximum tab height
    `protected int` | `maxTabWidth` | Maximum tab width
    `protected MouseListener` | `mouseListener` | Mouse change listener
    `protected PropertyChangeListener` | `propertyChangeListener` | Property change listener
    `protected Rectangle[]` | `rects` | Tab rects
    `protected KeyStroke` | `rightKey` | Deprecated. As of Java 2 platform v1.3.
    `protected int` | `runCount` | Run count
    `protected int` | `selectedRun` | Selected run
    `protected Insets` | `selectedTabPadInsets` | Selected tab insets
    `protected Color` | `shadow` | Shadow color
    `protected Insets` | `tabAreaInsets` | Tab area insets
    `protected ChangeListener` | `tabChangeListener` | Tab change listener
    `protected Insets` | `tabInsets` | Tab insets
    `protected JTabbedPane` | `tabPane` | The tab pane
    `protected int` | `tabRunOverlay` | Tab run overlay
    `protected int[]` | `tabRuns` | Tab runs
    `protected int` | `textIconGap` | Text icon gap
    `protected KeyStroke` | `upKey` | Deprecated. As of Java 2 platform v1.3.

    - ### Fields declared in 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 | Description
    --- | ---
    `BasicTabbedPaneUI()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `assureRectsCreated​(int tabCount)` | Assure the rectangles are created.
    `protected int` | `calculateMaxTabHeight​(int tabPlacement)` | Calculates the maximum tab height.
    `protected int` | `calculateMaxTabWidth​(int tabPlacement)` | Calculates the maximum tab width.
    `protected int` | `calculateTabAreaHeight​(int tabPlacement, int horizRunCount, int maxTabHeight)` | Calculates the tab area height.
    `protected int` | `calculateTabAreaWidth​(int tabPlacement, int vertRunCount, int maxTabWidth)` | Calculates the tab area width.
    `protected int` | `calculateTabHeight​(int tabPlacement, int tabIndex, int fontHeight)` | Calculates the tab height.
    `protected int` | `calculateTabWidth​(int tabPlacement, int tabIndex, FontMetrics metrics)` | Calculates the tab width.
    `protected ChangeListener` | `createChangeListener()` | Creates a change listener.
    `protected FocusListener` | `createFocusListener()` | Creates a focus listener.
    `protected LayoutManager` | `createLayoutManager()` | Invoked by `installUI` to create a layout manager object to manage the `JTabbedPane`.
    `protected MouseListener` | `createMouseListener()` | Creates a mouse listener.
    `protected PropertyChangeListener` | `createPropertyChangeListener()` | Creates a property change listener.
    `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)` | Create a UI.
    `protected void` | `expandTabRunsArray()` | Expands the tab runs array.
    `protected int` | `getBaseline​(int tab)` | Returns the baseline for the specified tab.
    `int` | `getBaseline​(JComponent c, int width, int height)` | Returns the baseline.
    `protected int` | `getBaselineOffset()` | Returns the amount the baseline is offset by.
    `Component.BaselineResizeBehavior` | `getBaselineResizeBehavior​(JComponent c)` | Returns an enum indicating how the baseline of the component changes as the size changes.
    `protected Insets` | `getContentBorderInsets​(int tabPlacement)` | Returns the content border insets.
    `protected int` | `getFocusIndex()` | Returns the index of the tab that has focus.
    `protected FontMetrics` | `getFontMetrics()` | Returns the font metrics.
    `protected Icon` | `getIconForTab​(int tabIndex)` | Returns the icon for a tab.
    `protected int` | `getNextTabIndex​(int base)` | Returns the next tab index.
    `protected int` | `getNextTabIndexInRun​(int tabCount, int base)` | Returns the next tab index in the run.
    `protected int` | `getNextTabRun​(int baseRun)` | Returns the next tab run.
    `protected int` | `getPreviousTabIndex​(int base)` | Returns the previous tab index.
    `protected int` | `getPreviousTabIndexInRun​(int tabCount, int base)` | Returns the previous tab index in the run.
    `protected int` | `getPreviousTabRun​(int baseRun)` | Returns the previous tab run.
    `protected int` | `getRolloverTab()` | Returns the tab the mouse is currently over, or `-1` if the mouse is no longer over any tab.
    `protected int` | `getRunForTab​(int tabCount, int tabIndex)` | Returns the run for a tab.
    `protected Insets` | `getSelectedTabPadInsets​(int tabPlacement)` | Returns the selected tab pad insets.
    `protected Insets` | `getTabAreaInsets​(int tabPlacement)` | Returns the tab area insets.
    `protected Rectangle` | `getTabBounds​(int tabIndex, Rectangle dest)` | Returns the bounds of the specified tab in the coordinate space of the JTabbedPane component.
    `Rectangle` | `getTabBounds​(JTabbedPane pane, int i)` | Returns the bounds of the specified tab index.
    `protected Insets` | `getTabInsets​(int tabPlacement, int tabIndex)` | Returns the tab insets.
    `protected int` | `getTabLabelShiftX​(int tabPlacement, int tabIndex, boolean isSelected)` | Returns the tab label shift x.
    `protected int` | `getTabLabelShiftY​(int tabPlacement, int tabIndex, boolean isSelected)` | Returns the tab label shift y.
    `protected int` | `getTabRunIndent​(int tabPlacement, int run)` | Returns the tab run indent.
    `protected int` | `getTabRunOffset​(int tabPlacement, int tabCount, int tabIndex, boolean forward)` | Returns the tab run offset.
    `protected int` | `getTabRunOverlay​(int tabPlacement)` | Returns the tab run overlay.
    `protected View` | `getTextViewForTab​(int tabIndex)` | Returns the text View object required to render stylized text (HTML) for the specified tab or null if no specialized text rendering is needed for this tab.
    `protected Component` | `getVisibleComponent()` | Returns the visible component.
    `protected void` | `installComponents()` | Creates and installs any required subcomponents for the JTabbedPane.
    `protected void` | `installDefaults()` | Install the defaults.
    `protected void` | `installKeyboardActions()` | Installs the keyboard actions.
    `protected void` | `installListeners()` | Install the listeners.
    `protected int` | `lastTabInRun​(int tabCount, int run)` | Returns the last tab in a run.
    `protected void` | `layoutLabel​(int tabPlacement, FontMetrics metrics, int tabIndex, String title, Icon icon, Rectangle tabRect, Rectangle iconRect, Rectangle textRect, boolean isSelected)` | Laysout a label.
    `protected void` | `navigateSelectedTab​(int direction)` | Navigate the selected tab.
    `protected void` | `paintContentBorder​(Graphics g, int tabPlacement, int selectedIndex)` | Paints the content border.
    `protected void` | `paintContentBorderBottomEdge​(Graphics g, int tabPlacement, int selectedIndex, int x, int y, int w, int h)` | Paints the content border bottom edge.
    `protected void` | `paintContentBorderLeftEdge​(Graphics g, int tabPlacement, int selectedIndex, int x, int y, int w, int h)` | Paints the content border left edge.
    `protected void` | `paintContentBorderRightEdge​(Graphics g, int tabPlacement, int selectedIndex, int x, int y, int w, int h)` | Paints the content border right edge.
    `protected void` | `paintContentBorderTopEdge​(Graphics g, int tabPlacement, int selectedIndex, int x, int y, int w, int h)` | Paints the content border top edge.
    `protected void` | `paintFocusIndicator​(Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect, boolean isSelected)` | Paints the focus indicator.
    `protected void` | `paintIcon​(Graphics g, int tabPlacement, int tabIndex, Icon icon, Rectangle iconRect, boolean isSelected)` | Paints an icon.
    `protected void` | `paintTab​(Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect)` | Paints a tab.
    `protected void` | `paintTabArea​(Graphics g, int tabPlacement, int selectedIndex)` | Paints the tabs in the tab area.
    `protected void` | `paintTabBackground​(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected)` | Paints the tab background.
    `protected void` | `paintTabBorder​(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected)` | this function draws the border around each tab note that this function does now draw the background of the tab.
    `protected void` | `paintText​(Graphics g, int tabPlacement, Font font, FontMetrics metrics, int tabIndex, String title, Rectangle textRect, boolean isSelected)` | Paints text.
    `protected static void` | `rotateInsets​(Insets topInsets, Insets targetInsets, int targetPlacement)` | Rotates the insets.
    `protected void` | `selectAdjacentRunTab​(int tabPlacement, int tabIndex, int offset)` | Selects an adjacent run of tabs.
    `protected void` | `selectNextTab​(int current)` | Select the next tab.
    `protected void` | `selectNextTabInRun​(int current)` | Select the next tab in the run.
    `protected void` | `selectPreviousTab​(int current)` | Select the previous tab.
    `protected void` | `selectPreviousTabInRun​(int current)` | Select the previous tab in the run.
    `protected void` | `setRolloverTab​(int index)` | Sets the tab the mouse is currently over to `index`.
    `protected void` | `setVisibleComponent​(Component component)` | Sets the visible component.
    `protected boolean` | `shouldPadTabRun​(int tabPlacement, int run)` | Returns whether or not the tab run should be padded.
    `protected boolean` | `shouldRotateTabRuns​(int tabPlacement)` | Returns whether or not the tab run should be rotated.
    `int` | `tabForCoordinate​(JTabbedPane pane, int x, int y)` | Returns the tab index which intersects the specified point in the JTabbedPane's coordinate space.
    `protected void` | `uninstallComponents()` | Removes any installed subcomponents from the JTabbedPane.
    `protected void` | `uninstallDefaults()` | Uninstall the defaults.
    `protected void` | `uninstallKeyboardActions()` | Uninstalls the keyboard actions.
    `protected void` | `uninstallListeners()` | Uninstall the listeners.

    - ### Methods declared in class javax.swing.plaf.TabbedPaneUI

      `getTabRunCount`

    - ### Methods declared in class javax.swing.plaf.ComponentUI

      `contains, getAccessibleChild, getAccessibleChildrenCount, getMaximumSize, getMinimumSize, getPreferredSize, installUI, paint, uninstallUI, update`

    - ### Methods declared in class java.lang.Object

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

- - ### Field Detail

    - #### tabPane

          protected JTabbedPane tabPane

      The tab pane

    - #### highlight

          protected Color highlight

      Highlight color

    - #### lightHighlight

          protected Color lightHighlight

      Light highlight color

    - #### shadow

          protected Color shadow

      Shadow color

    - #### darkShadow

          protected Color darkShadow

      Dark shadow color

    - #### focus

          protected Color focus

      Focus color

    - #### textIconGap

          protected int textIconGap

      Text icon gap

    - #### tabRunOverlay

          protected int tabRunOverlay

      Tab run overlay

    - #### tabInsets

          protected Insets tabInsets

      Tab insets

    - #### selectedTabPadInsets

          protected Insets selectedTabPadInsets

      Selected tab insets

    - #### tabAreaInsets

          protected Insets tabAreaInsets

      Tab area insets

    - #### contentBorderInsets

          protected Insets contentBorderInsets

      Content border insets

    - #### 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.

    - #### tabRuns

          protected int[] tabRuns

      Tab runs

    - #### runCount

          protected int runCount

      Run count

    - #### selectedRun

          protected int selectedRun

      Selected run

    - #### rects

          protected Rectangle[] rects

      Tab rects

    - #### maxTabHeight

          protected int maxTabHeight

      Maximum tab height

    - #### maxTabWidth

          protected int maxTabWidth

      Maximum tab width

    - #### tabChangeListener

          protected ChangeListener tabChangeListener

      Tab change listener

    - #### propertyChangeListener

          protected PropertyChangeListener propertyChangeListener

      Property change listener

    - #### mouseListener

          protected MouseListener mouseListener

      Mouse change listener

    - #### focusListener

          protected FocusListener focusListener

      Focus change listener

    - #### calcRect

          protected transient Rectangle calcRect

      A rectangle used for general layout calculations in order to avoid constructing many new Rectangles on the fly.

  - ### Constructor Detail

    - #### BasicTabbedPaneUI

          public BasicTabbedPaneUI()

  - ### Method Detail

    - #### createUI

          public static ComponentUI createUI​(JComponent c)

      Create a UI.
      Parameters:
        `c` - a component
      Returns:
        a UI

    - #### createLayoutManager

          protected LayoutManager createLayoutManager()

      Invoked by `installUI` to create a layout manager object to manage the `JTabbedPane`.
      Returns:
        a layout manager object
      See Also:
        `BasicTabbedPaneUI.TabbedPaneLayout`, `JTabbedPane.getTabLayoutPolicy()`

    - #### installComponents

          protected void installComponents()

      Creates and installs any required subcomponents for the JTabbedPane. Invoked by installUI.
      Since:
        1.4

    - #### 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.
      Parameters:
        `direction` - One of the SwingConstants constants: SOUTH, NORTH, EAST or WEST
      Returns:
        Widget for user to
      Throws:
        `IllegalArgumentException` - if direction is not one of NORTH, SOUTH, EAST or WEST
      Since:
        1.5
      See Also:
        `JTabbedPane.setTabPlacement(int)`, `SwingConstants`

    - #### uninstallComponents

          protected void uninstallComponents()

      Removes any installed subcomponents from the JTabbedPane. Invoked by uninstallUI.
      Since:
        1.4

    - #### installDefaults

          protected void installDefaults()

      Install the defaults.

    - #### uninstallDefaults

          protected void uninstallDefaults()

      Uninstall the defaults.

    - #### installListeners

          protected void installListeners()

      Install the listeners.

    - #### uninstallListeners

          protected void uninstallListeners()

      Uninstall the listeners.

    - #### createMouseListener

          protected MouseListener createMouseListener()

      Creates a mouse listener.
      Returns:
        a mouse listener

    - #### createFocusListener

          protected FocusListener createFocusListener()

      Creates a focus listener.
      Returns:
        a focus listener

    - #### createChangeListener

          protected ChangeListener createChangeListener()

      Creates a change listener.
      Returns:
        a change listener

    - #### createPropertyChangeListener

          protected PropertyChangeListener createPropertyChangeListener()

      Creates a property change listener.
      Returns:
        a property change listener

    - #### installKeyboardActions

          protected void installKeyboardActions()

      Installs the keyboard actions.

    - #### uninstallKeyboardActions

          protected void uninstallKeyboardActions()

      Uninstalls the keyboard actions.

    - #### 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.
      Parameters:
        `index` - Index of the tab the mouse is over.
      Since:
        1.5

    - #### getRolloverTab

          protected int getRolloverTab()

      Returns the tab the mouse is currently over, or `-1` if the mouse is no longer over any tab.
      Returns:
        the tab the mouse is currently over, or `-1` if the mouse is no longer over any tab
      Since:
        1.5

    - #### getBaseline

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

      Returns the baseline.
      Overrides:
        `getBaseline` in class `ComponentUI`
      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)`

    - #### getBaselineResizeBehavior

          public Component.BaselineResizeBehavior getBaselineResizeBehavior​(JComponent c)

      Returns an enum indicating how the baseline of the component changes as the size changes.
      Overrides:
        `getBaselineResizeBehavior` in class `ComponentUI`
      Parameters:
        `c` - `JComponent` to return baseline resize behavior for
      Returns:
        an enum indicating how the baseline changes as the component size changes
      Throws:
        `NullPointerException` - if `c` is `null`
      Since:
        1.6
      See Also:
        `JComponent.getBaseline(int, int)`

    - #### getBaseline

          protected int getBaseline​(int tab)

      Returns the baseline for the specified tab.
      Parameters:
        `tab` - index of tab to get baseline for
      Returns:
        baseline or a value < 0 indicating there is no reasonable baseline
      Throws:
        `IndexOutOfBoundsException` - if index is out of range (index < 0 || index >= tab count)
      Since:
        1.6

    - #### getBaselineOffset

          protected int getBaselineOffset()

      Returns the amount the baseline is offset by. This is typically the same as `getTabLabelShiftY`.
      Returns:
        amount to offset the baseline by
      Since:
        1.6

    - #### paintTabArea

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

      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.
      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
      Since:
        1.4

    - #### paintTab

          protected void paintTab​(Graphics g,
                                  int tabPlacement,
                                  Rectangle[] rects,
                                  int tabIndex,
                                  Rectangle iconRect,
                                  Rectangle textRect)

      Paints a tab.
      Parameters:
        `g` - the graphics
        `tabPlacement` - the tab placement
        `rects` - rectangles
        `tabIndex` - the tab index
        `iconRect` - the icon rectangle
        `textRect` - the text rectangle

    - #### layoutLabel

          protected void layoutLabel​(int tabPlacement,
                                     FontMetrics metrics,
                                     int tabIndex,
                                     String title,
                                     Icon icon,
                                     Rectangle tabRect,
                                     Rectangle iconRect,
                                     Rectangle textRect,
                                     boolean isSelected)

      Laysout a label.
      Parameters:
        `tabPlacement` - the tab placement
        `metrics` - the font metric
        `tabIndex` - the tab index
        `title` - the title
        `icon` - the icon
        `tabRect` - the tab rectangle
        `iconRect` - the icon rectangle
        `textRect` - the text rectangle
        `isSelected` - selection status

    - #### paintIcon

          protected void paintIcon​(Graphics g,
                                   int tabPlacement,
                                   int tabIndex,
                                   Icon icon,
                                   Rectangle iconRect,
                                   boolean isSelected)

      Paints an icon.
      Parameters:
        `g` - the graphics
        `tabPlacement` - the tab placement
        `tabIndex` - the tab index
        `icon` - the icon
        `iconRect` - the icon rectangle
        `isSelected` - selection status

    - #### paintText

          protected void paintText​(Graphics g,
                                   int tabPlacement,
                                   Font font,
                                   FontMetrics metrics,
                                   int tabIndex,
                                   String title,
                                   Rectangle textRect,
                                   boolean isSelected)

      Paints text.
      Parameters:
        `g` - the graphics
        `tabPlacement` - the tab placement
        `font` - the font
        `metrics` - the font metrics
        `tabIndex` - the tab index
        `title` - the title
        `textRect` - the text rectangle
        `isSelected` - selection status

    - #### getTabLabelShiftX

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

      Returns the tab label shift x.
      Parameters:
        `tabPlacement` - the tab placement
        `tabIndex` - the tab index
        `isSelected` - selection status
      Returns:
        the tab label shift x

    - #### getTabLabelShiftY

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

      Returns the tab label shift y.
      Parameters:
        `tabPlacement` - the tab placement
        `tabIndex` - the tab index
        `isSelected` - selection status
      Returns:
        the tab label shift y

    - #### paintFocusIndicator

          protected void paintFocusIndicator​(Graphics g,
                                             int tabPlacement,
                                             Rectangle[] rects,
                                             int tabIndex,
                                             Rectangle iconRect,
                                             Rectangle textRect,
                                             boolean isSelected)

      Paints the focus indicator.
      Parameters:
        `g` - the graphics
        `tabPlacement` - the tab placement
        `rects` - rectangles
        `tabIndex` - the tab index
        `iconRect` - the icon rectangle
        `textRect` - the text rectangle
        `isSelected` - selection status

    - #### paintTabBorder

          protected void paintTabBorder​(Graphics g,
                                        int tabPlacement,
                                        int tabIndex,
                                        int x,
                                        int y,
                                        int w,
                                        int h,
                                        boolean isSelected)

      this function draws the border around each tab note that this function does now draw the background of the tab. that is done elsewhere
      Parameters:
        `g` - the graphics context in which to paint
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `tabIndex` - the index of the tab with respect to other tabs
        `x` - the x coordinate of tab
        `y` - the y coordinate of tab
        `w` - the width of the tab
        `h` - the height of the tab
        `isSelected` - a `boolean` which determines whether or not the tab is selected

    - #### paintTabBackground

          protected void paintTabBackground​(Graphics g,
                                            int tabPlacement,
                                            int tabIndex,
                                            int x,
                                            int y,
                                            int w,
                                            int h,
                                            boolean isSelected)

      Paints the tab background.
      Parameters:
        `g` - the graphics context in which to paint
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `tabIndex` - the index of the tab with respect to other tabs
        `x` - the x coordinate of tab
        `y` - the y coordinate of tab
        `w` - the width of the tab
        `h` - the height of the tab
        `isSelected` - a `boolean` which determines whether or not the tab is selected

    - #### paintContentBorder

          protected void paintContentBorder​(Graphics g,
                                            int tabPlacement,
                                            int selectedIndex)

      Paints the content border.
      Parameters:
        `g` - the graphics context in which to paint
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `selectedIndex` - the tab index of the selected component

    - #### paintContentBorderTopEdge

          protected void paintContentBorderTopEdge​(Graphics g,
                                                   int tabPlacement,
                                                   int selectedIndex,
                                                   int x,
                                                   int y,
                                                   int w,
                                                   int h)

      Paints the content border top edge.
      Parameters:
        `g` - the graphics context in which to paint
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `selectedIndex` - the tab index of the selected component
        `x` - the x coordinate of tab
        `y` - the y coordinate of tab
        `w` - the width of the tab
        `h` - the height of the tab

    - #### paintContentBorderLeftEdge

          protected void paintContentBorderLeftEdge​(Graphics g,
                                                    int tabPlacement,
                                                    int selectedIndex,
                                                    int x,
                                                    int y,
                                                    int w,
                                                    int h)

      Paints the content border left edge.
      Parameters:
        `g` - the graphics context in which to paint
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `selectedIndex` - the tab index of the selected component
        `x` - the x coordinate of tab
        `y` - the y coordinate of tab
        `w` - the width of the tab
        `h` - the height of the tab

    - #### paintContentBorderBottomEdge

          protected void paintContentBorderBottomEdge​(Graphics g,
                                                      int tabPlacement,
                                                      int selectedIndex,
                                                      int x,
                                                      int y,
                                                      int w,
                                                      int h)

      Paints the content border bottom edge.
      Parameters:
        `g` - the graphics context in which to paint
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `selectedIndex` - the tab index of the selected component
        `x` - the x coordinate of tab
        `y` - the y coordinate of tab
        `w` - the width of the tab
        `h` - the height of the tab

    - #### paintContentBorderRightEdge

          protected void paintContentBorderRightEdge​(Graphics g,
                                                     int tabPlacement,
                                                     int selectedIndex,
                                                     int x,
                                                     int y,
                                                     int w,
                                                     int h)

      Paints the content border right edge.
      Parameters:
        `g` - the graphics context in which to paint
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `selectedIndex` - the tab index of the selected component
        `x` - the x coordinate of tab
        `y` - the y coordinate of tab
        `w` - the width of the tab
        `h` - the height of the tab

    - #### getTabBounds

          public Rectangle getTabBounds​(JTabbedPane pane,
                                        int i)

      Returns the bounds of the specified tab index. The bounds are with respect to the JTabbedPane's coordinate space.
      Specified by:
        `getTabBounds` in class `TabbedPaneUI`
      Parameters:
        `pane` - the pane
        `i` - the index
      Returns:
        the rectangle for the tab bounds

    - #### tabForCoordinate

          public int tabForCoordinate​(JTabbedPane pane,
                                      int x,
                                      int y)

      Returns the tab index which intersects the specified point in the JTabbedPane's coordinate space.
      Specified by:
        `tabForCoordinate` in class `TabbedPaneUI`
      Parameters:
        `pane` - the pane
        `x` - the x coordinate
        `y` - the y coordinate
      Returns:
        the tab for the coordinate

    - #### getTabBounds

          protected Rectangle getTabBounds​(int tabIndex,
                                           Rectangle dest)

      Returns the bounds of the specified tab in the coordinate space of the JTabbedPane component. This is required because the tab rects are by default defined in the coordinate space of the component where they are rendered, which could be the JTabbedPane (for WRAP_TAB_LAYOUT) or a ScrollableTabPanel (SCROLL_TAB_LAYOUT). This method should be used whenever the tab rectangle must be relative to the JTabbedPane itself and the result should be placed in a designated Rectangle object (rather than instantiating and returning a new Rectangle each time). The tab index parameter must be a valid tabbed pane tab index (0 to tab count - 1, inclusive). The destination rectangle parameter must be a valid `Rectangle` instance. The handling of invalid parameters is unspecified.
      Parameters:
        `tabIndex` - the index of the tab
        `dest` - the rectangle where the result should be placed
      Returns:
        the resulting rectangle
      Since:
        1.4

    - #### getVisibleComponent

          protected Component getVisibleComponent()

      Returns the visible component.
      Returns:
        the visible component

    - #### setVisibleComponent

          protected void setVisibleComponent​(Component component)

      Sets the visible component.
      Parameters:
        `component` - the component

    - #### assureRectsCreated

          protected void assureRectsCreated​(int tabCount)

      Assure the rectangles are created.
      Parameters:
        `tabCount` - the tab count

    - #### expandTabRunsArray

          protected void expandTabRunsArray()

      Expands the tab runs array.

    - #### getRunForTab

          protected int getRunForTab​(int tabCount,
                                     int tabIndex)

      Returns the run for a tab.
      Parameters:
        `tabCount` - the tab count
        `tabIndex` - the tab index.
      Returns:
        the run for a tab

    - #### lastTabInRun

          protected int lastTabInRun​(int tabCount,
                                     int run)

      Returns the last tab in a run.
      Parameters:
        `tabCount` - the tab count
        `run` - the run
      Returns:
        the last tab in a run

    - #### getTabRunOverlay

          protected int getTabRunOverlay​(int tabPlacement)

      Returns the tab run overlay.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
      Returns:
        the tab run overlay

    - #### getTabRunIndent

          protected int getTabRunIndent​(int tabPlacement,
                                        int run)

      Returns the tab run indent.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `run` - the tab run
      Returns:
        the tab run indent

    - #### shouldPadTabRun

          protected boolean shouldPadTabRun​(int tabPlacement,
                                            int run)

      Returns whether or not the tab run should be padded.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `run` - the tab run
      Returns:
        whether or not the tab run should be padded

    - #### shouldRotateTabRuns

          protected boolean shouldRotateTabRuns​(int tabPlacement)

      Returns whether or not the tab run should be rotated.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
      Returns:
        whether or not the tab run should be rotated

    - #### getIconForTab

          protected Icon getIconForTab​(int tabIndex)

      Returns the icon for a tab.
      Parameters:
        `tabIndex` - the index of the tab
      Returns:
        the icon for a tab

    - #### getTextViewForTab

          protected View getTextViewForTab​(int tabIndex)

      Returns the text View object required to render stylized text (HTML) for the specified tab or null if no specialized text rendering is needed for this tab. This is provided to support html rendering inside tabs.
      Parameters:
        `tabIndex` - the index of the tab
      Returns:
        the text view to render the tab's text or null if no specialized rendering is required
      Since:
        1.4

    - #### calculateTabHeight

          protected int calculateTabHeight​(int tabPlacement,
                                           int tabIndex,
                                           int fontHeight)

      Calculates the tab height.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `tabIndex` - the index of the tab with respect to other tabs
        `fontHeight` - the font height
      Returns:
        the tab height

    - #### calculateMaxTabHeight

          protected int calculateMaxTabHeight​(int tabPlacement)

      Calculates the maximum tab height.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
      Returns:
        the maximum tab height

    - #### calculateTabWidth

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

      Calculates the tab width.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `tabIndex` - the index of the tab with respect to other tabs
        `metrics` - the font metrics
      Returns:
        the tab width

    - #### calculateMaxTabWidth

          protected int calculateMaxTabWidth​(int tabPlacement)

      Calculates the maximum tab width.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
      Returns:
        the maximum tab width

    - #### calculateTabAreaHeight

          protected int calculateTabAreaHeight​(int tabPlacement,
                                               int horizRunCount,
                                               int maxTabHeight)

      Calculates the tab area height.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `horizRunCount` - horizontal run count
        `maxTabHeight` - maximum tab height
      Returns:
        the tab area height

    - #### calculateTabAreaWidth

          protected int calculateTabAreaWidth​(int tabPlacement,
                                              int vertRunCount,
                                              int maxTabWidth)

      Calculates the tab area width.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `vertRunCount` - vertical run count
        `maxTabWidth` - maximum tab width
      Returns:
        the tab area width

    - #### getTabInsets

          protected Insets getTabInsets​(int tabPlacement,
                                        int tabIndex)

      Returns the tab insets.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `tabIndex` - the tab index
      Returns:
        the tab insets

    - #### getSelectedTabPadInsets

          protected Insets getSelectedTabPadInsets​(int tabPlacement)

      Returns the selected tab pad insets.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
      Returns:
        the selected tab pad insets

    - #### getTabAreaInsets

          protected Insets getTabAreaInsets​(int tabPlacement)

      Returns the tab area insets.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
      Returns:
        the pad area insets

    - #### getContentBorderInsets

          protected Insets getContentBorderInsets​(int tabPlacement)

      Returns the content border insets.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
      Returns:
        the content border insets

    - #### getFontMetrics

          protected FontMetrics getFontMetrics()

      Returns the font metrics.
      Returns:
        the font metrics

    - #### navigateSelectedTab

          protected void navigateSelectedTab​(int direction)

      Navigate the selected tab.
      Parameters:
        `direction` - the direction

    - #### selectNextTabInRun

          protected void selectNextTabInRun​(int current)

      Select the next tab in the run.
      Parameters:
        `current` - the current tab

    - #### selectPreviousTabInRun

          protected void selectPreviousTabInRun​(int current)

      Select the previous tab in the run.
      Parameters:
        `current` - the current tab

    - #### selectNextTab

          protected void selectNextTab​(int current)

      Select the next tab.
      Parameters:
        `current` - the current tab

    - #### selectPreviousTab

          protected void selectPreviousTab​(int current)

      Select the previous tab.
      Parameters:
        `current` - the current tab

    - #### selectAdjacentRunTab

          protected void selectAdjacentRunTab​(int tabPlacement,
                                              int tabIndex,
                                              int offset)

      Selects an adjacent run of tabs.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `tabIndex` - the index of the tab with respect to other tabs
        `offset` - selection offset

    - #### getFocusIndex

          protected int getFocusIndex()

      Returns the index of the tab that has focus.
      Returns:
        index of tab that has focus
      Since:
        1.5

    - #### getTabRunOffset

          protected int getTabRunOffset​(int tabPlacement,
                                        int tabCount,
                                        int tabIndex,
                                        boolean forward)

      Returns the tab run offset.
      Parameters:
        `tabPlacement` - the placement (left, right, bottom, top) of the tab
        `tabCount` - the tab count
        `tabIndex` - the index of the tab with respect to other tabs
        `forward` - forward or not
      Returns:
        the tab run offset

    - #### getPreviousTabIndex

          protected int getPreviousTabIndex​(int base)

      Returns the previous tab index.
      Parameters:
        `base` - the base
      Returns:
        the previous tab index

    - #### getNextTabIndex

          protected int getNextTabIndex​(int base)

      Returns the next tab index.
      Parameters:
        `base` - the base
      Returns:
        the next tab index

    - #### getNextTabIndexInRun

          protected int getNextTabIndexInRun​(int tabCount,
                                             int base)

      Returns the next tab index in the run.
      Parameters:
        `tabCount` - the tab count
        `base` - the base
      Returns:
        the next tab index in the run

    - #### getPreviousTabIndexInRun

          protected int getPreviousTabIndexInRun​(int tabCount,
                                                 int base)

      Returns the previous tab index in the run.
      Parameters:
        `tabCount` - the tab count
        `base` - the base
      Returns:
        the previous tab index in the run

    - #### getPreviousTabRun

          protected int getPreviousTabRun​(int baseRun)

      Returns the previous tab run.
      Parameters:
        `baseRun` - the base run
      Returns:
        the previous tab run

    - #### getNextTabRun

          protected int getNextTabRun​(int baseRun)

      Returns the next tab run.
      Parameters:
        `baseRun` - the base run
      Returns:
        the next tab run

    - #### rotateInsets

          protected static void rotateInsets​(Insets topInsets,
                                             Insets targetInsets,
                                             int targetPlacement)

      Rotates the insets.
      Parameters:
        `topInsets` - the top insets
        `targetInsets` - the target insets
        `targetPlacement` - the target placement