# 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 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()`
Constructs a `BasicTabbedPaneUI`.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`assureRectsCreated(int tabCount)`
Assures the tab 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)`
Creates 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.
`int`
`getTabRunCount(JTabbedPane pane)`
Returns the tab run count.
`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()`
Installs the defaults.
`protected void`
`installKeyboardActions()`
Installs the keyboard actions.
`protected void`
`installListeners()`
Installs 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)`
Lays out a label.
`protected void`
`navigateSelectedTab(int direction)`
Navigates 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)`
Paints the border around a 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)`
Selects the next tab.
`protected void`
`selectNextTabInRun(int current)`
Selects the next tab in the run.
`protected void`
`selectPreviousTab(int current)`
Selects the previous tab.
`protected void`
`selectPreviousTabInRun(int current)`
Selects 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()`
Uninstalls the defaults.
`protected void`
`uninstallKeyboardActions()`
Uninstalls the keyboard actions.
`protected void`
`uninstallListeners()`
Uninstalls the listeners.

### Methods declared in class ComponentUI

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

### Methods declared in class Object

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

## Field Details

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

### BasicTabbedPaneUI

public BasicTabbedPaneUI()
Constructs a `BasicTabbedPaneUI`.

## Method Details

### createUI

public static ComponentUI createUI(JComponent c)
Creates 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()
Installs the defaults.

### uninstallDefaults

protected void uninstallDefaults()
Uninstalls the defaults.

### installListeners

protected void installListeners()
Installs the listeners.

### uninstallListeners

protected void uninstallListeners()
Uninstalls 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` - the tab 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)
Lays out a label.

Parameters:
  `tabPlacement` - the tab placement
  `metrics` - the font metrics
  `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` - the tab 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)
Paints the border around a tab. Note that this function does not paint 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

### getTabRunCount

public int getTabRunCount(JTabbedPane pane)
Description copied from class: `TabbedPaneUI`
Returns the tab run count.

Specified by:
  `getTabRunCount` in class `TabbedPaneUI`
Parameters:
  `pane` - the pane
Returns:
  the tab run count

### 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)
Assures the tab 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)
Navigates the selected tab.

Parameters:
  `direction` - the direction

### selectNextTabInRun

protected void selectNextTabInRun(int current)
Selects the next tab in the run.

Parameters:
  `current` - the current tab

### selectPreviousTabInRun

protected void selectPreviousTabInRun(int current)
Selects the previous tab in the run.

Parameters:
  `current` - the current tab

### selectNextTab

protected void selectNextTab(int current)
Selects the next tab.

Parameters:
  `current` - the current tab

### selectPreviousTab

protected void selectPreviousTab(int current)
Selects 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