# Class MetalTabbedPaneUI

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.TabbedPaneUI
javax.swing.plaf.basic.BasicTabbedPaneUI
javax.swing.plaf.metal.MetalTabbedPaneUI

All Implemented Interfaces:
  `SwingConstants`

public class MetalTabbedPaneUI extends BasicTabbedPaneUI
The Metal subclass of BasicTabbedPaneUI.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the `java.beans` package. Please see `XMLEncoder`.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`class`
`MetalTabbedPaneUI.TabbedPaneLayout`
This class should be treated as a "protected" inner class.

### Nested classes/interfaces declared in class BasicTabbedPaneUI

`BasicTabbedPaneUI.FocusHandler, BasicTabbedPaneUI.MouseHandler, BasicTabbedPaneUI.PropertyChangeHandler, BasicTabbedPaneUI.TabSelectionHandler`
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.TabSelectionHandler`
This class should be treated as a "protected" inner class.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected int`
`minTabWidth`
The minimum width of a pane.
`protected Color`
`selectColor`
The color of the selected pane.
`protected Color`
`selectHighlight`
The color of the highlight.
`protected Color`
`tabAreaBackground`
The color of tab's background.

### Fields declared in class 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`
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`
Modifier and Type
Field
Description
`static final int`
`BOTTOM`
Box-orientation constant used to specify the bottom of a box.
`static final int`
`CENTER`
The central position in an area.
`static final int`
`EAST`
Compass-direction east (right).
`static final int`
`HORIZONTAL`
Horizontal orientation.
`static final int`
`LEADING`
Identifies the leading edge of text for use with left-to-right and right-to-left languages.
`static final int`
`LEFT`
Box-orientation constant used to specify the left side of a box.
`static final int`
`NEXT`
Identifies the next direction in a sequence.
`static final int`
`NORTH`
Compass-direction North (up).
`static final int`
`NORTH_EAST`
Compass-direction north-east (upper right).
`static final int`
`NORTH_WEST`
Compass-direction north west (upper left).
`static final int`
`PREVIOUS`
Identifies the previous direction in a sequence.
`static final int`
`RIGHT`
Box-orientation constant used to specify the right side of a box.
`static final int`
`SOUTH`
Compass-direction south (down).
`static final int`
`SOUTH_EAST`
Compass-direction south-east (lower right).
`static final int`
`SOUTH_WEST`
Compass-direction south-west (lower left).
`static final int`
`TOP`
Box-orientation constant used to specify the top of a box.
`static final int`
`TRAILING`
Identifies the trailing edge of text for use with left-to-right and right-to-left languages.
`static final int`
`VERTICAL`
Vertical orientation.
`static final int`
`WEST`
Compass-direction west (left).

## Constructor Summary

Constructors
Constructor
Description
`MetalTabbedPaneUI()`
Constructs a `MetalTabbedPaneUI`.

## Method Summary

Modifier and Type
Method
Description
`static ComponentUI`
`createUI(JComponent x)`
Constructs `MetalTabbedPaneUI`.
`protected int`
`getBaselineOffset()`
Returns the amount the baseline is offset by.
`protected Color`
`getColorForGap(int currentRun, int x, int y)`
Returns the color of the gap.
`protected int`
`getTabLabelShiftX(int tabPlacement, int tabIndex, boolean isSelected)`
Overridden to do nothing for the Java L&F.
`protected int`
`getTabLabelShiftY(int tabPlacement, int tabIndex, boolean isSelected)`
Overridden to do nothing for the Java L&F.
`protected void`
`paintBottomTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)`
Paints the bottom tab border.
`protected void`
`paintHighlightBelowTab()`
Paints highlights below tab.
`protected void`
`paintLeftTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)`
Paints the left tab border.
`protected void`
`paintRightTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)`
Paints the right tab border.
`protected void`
`paintTopTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)`
Paints the top tab border.
`protected boolean`
`shouldFillGap(int currentRun, int tabIndex, int x, int y)`
Returns `true` if the gap should be filled.
`protected boolean`
`shouldRotateTabRuns(int tabPlacement, int selectedRun)`
Returns `true` if tab runs should be rotated.

### Methods declared in class BasicTabbedPaneUI

`assureRectsCreated, calculateMaxTabHeight, calculateMaxTabWidth, calculateTabAreaHeight, calculateTabAreaWidth, calculateTabHeight, calculateTabWidth, createChangeListener, createFocusListener, createLayoutManager, createMouseListener, createPropertyChangeListener, createScrollButton, expandTabRunsArray, getBaseline, getBaseline, getBaselineResizeBehavior, getContentBorderInsets, getFocusIndex, getFontMetrics, getIconForTab, getNextTabIndex, getNextTabIndexInRun, getNextTabRun, getPreviousTabIndex, getPreviousTabIndexInRun, getPreviousTabRun, getRolloverTab, getRunForTab, getSelectedTabPadInsets, getTabAreaInsets, getTabBounds, getTabBounds, getTabInsets, getTabRunCount, getTabRunIndent, getTabRunOffset, getTabRunOverlay, getTextViewForTab, getVisibleComponent, installComponents, installDefaults, installKeyboardActions, installListeners, lastTabInRun, layoutLabel, navigateSelectedTab, paintContentBorder, paintContentBorderBottomEdge, paintContentBorderLeftEdge, paintContentBorderRightEdge, paintContentBorderTopEdge, paintFocusIndicator, paintIcon, paintTab, paintTabArea, paintTabBackground, paintTabBorder, paintText, rotateInsets, selectAdjacentRunTab, selectNextTab, selectNextTabInRun, selectPreviousTab, selectPreviousTabInRun, setRolloverTab, setVisibleComponent, shouldPadTabRun, shouldRotateTabRuns, tabForCoordinate, uninstallComponents, uninstallDefaults, uninstallKeyboardActions, uninstallListeners`
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.
`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.
`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.
`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`
Modifier and Type
Method
Description
`boolean`
`contains(JComponent c, int x, int y)`
Returns `true` if the specified x,y location is contained within the look and feel's defined shape of the specified component.
`Accessible`
`getAccessibleChild(JComponent c, int i)`
Returns the `i`th `Accessible` child of the object.
`int`
`getAccessibleChildrenCount(JComponent c)`
Returns the number of accessible children in the object.
`Dimension`
`getMaximumSize(JComponent c)`
Returns the specified component's maximum size appropriate for the look and feel.
`Dimension`
`getMinimumSize(JComponent c)`
Returns the specified component's minimum size appropriate for the look and feel.
`Dimension`
`getPreferredSize(JComponent c)`
Returns the specified component's preferred size appropriate for the look and feel.
`void`
`installUI(JComponent c)`
Configures the specified component appropriately for the look and feel.
`void`
`paint(Graphics g, JComponent c)`
Paints the specified component appropriately for the look and feel.
`void`
`uninstallUI(JComponent c)`
Reverses configuration which was done on the specified component during `installUI`.
`void`
`update(Graphics g, JComponent c)`
Notifies this UI delegate that it is time to paint the specified component.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`String`
`toString()`
Returns a string representation of the object.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## Field Details

### minTabWidth

protected int minTabWidth
The minimum width of a pane.

### tabAreaBackground

protected Color tabAreaBackground
The color of tab's background.

### selectColor

protected Color selectColor
The color of the selected pane.

### selectHighlight

protected Color selectHighlight
The color of the highlight.

## Constructor Details

### MetalTabbedPaneUI

public MetalTabbedPaneUI()
Constructs a `MetalTabbedPaneUI`.

## Method Details

### createUI

public static ComponentUI createUI(JComponent x)
Constructs `MetalTabbedPaneUI`.

Parameters:
  `x` - a component
Returns:
  an instance of `MetalTabbedPaneUI`

### paintTopTabBorder

protected void paintTopTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)
Paints the top tab border.

Parameters:
  `tabIndex` - a tab index
  `g` - an instance of `Graphics`
  `x` - an X coordinate
  `y` - an Y coordinate
  `w` - a width
  `h` - a height
  `btm` - bottom
  `rght` - right
  `isSelected` - a selection

### shouldFillGap

protected boolean shouldFillGap(int currentRun, int tabIndex, int x, int y)
Returns `true` if the gap should be filled.

Parameters:
  `currentRun` - the current run
  `tabIndex` - the tab index
  `x` - an X coordinate
  `y` - an Y coordinate
Returns:
  `true` if the gap should be filled

### getColorForGap

protected Color getColorForGap(int currentRun, int x, int y)
Returns the color of the gap.

Parameters:
  `currentRun` - the current run
  `x` - an X coordinate
  `y` - an Y coordinate
Returns:
  the color of the gap

### paintLeftTabBorder

protected void paintLeftTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)
Paints the left tab border.

Parameters:
  `tabIndex` - a tab index
  `g` - an instance of `Graphics`
  `x` - an X coordinate
  `y` - an Y coordinate
  `w` - a width
  `h` - a height
  `btm` - bottom
  `rght` - right
  `isSelected` - a selection

### paintBottomTabBorder

protected void paintBottomTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)
Paints the bottom tab border.

Parameters:
  `tabIndex` - a tab index
  `g` - an instance of `Graphics`
  `x` - an X coordinate
  `y` - an Y coordinate
  `w` - a width
  `h` - a height
  `btm` - bottom
  `rght` - right
  `isSelected` - a selection

### paintRightTabBorder

protected void paintRightTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)
Paints the right tab border.

Parameters:
  `tabIndex` - a tab index
  `g` - an instance of `Graphics`
  `x` - an X coordinate
  `y` - an Y coordinate
  `w` - a width
  `h` - a height
  `btm` - bottom
  `rght` - right
  `isSelected` - a selection

### getTabLabelShiftX

protected int getTabLabelShiftX(int tabPlacement, int tabIndex, boolean isSelected)
Overridden to do nothing for the Java L&F.

Overrides:
  `getTabLabelShiftX` in class `BasicTabbedPaneUI`
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)
Overridden to do nothing for the Java L&F.

Overrides:
  `getTabLabelShiftY` in class `BasicTabbedPaneUI`
Parameters:
  `tabPlacement` - the tab placement
  `tabIndex` - the tab index
  `isSelected` - selection status
Returns:
  the tab label shift y

### getBaselineOffset

protected int getBaselineOffset()
Returns the amount the baseline is offset by. This is typically the same as `getTabLabelShiftY`.

Overrides:
  `getBaselineOffset` in class `BasicTabbedPaneUI`
Returns:
  amount to offset the baseline by
Since:
  1.6

### paintHighlightBelowTab

protected void paintHighlightBelowTab()
Paints highlights below tab.

### shouldRotateTabRuns

protected boolean shouldRotateTabRuns(int tabPlacement, int selectedRun)
Returns `true` if tab runs should be rotated.

Parameters:
  `tabPlacement` - a tab placement
  `selectedRun` - a selected run
Returns:
  `true` if tab runs should be rotated.