Package com.formdev.flatlaf.ui
Class FlatTabbedPaneUI.FlatTabbedPaneLayout
- java.lang.Object
-
- javax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
-
- com.formdev.flatlaf.ui.FlatTabbedPaneUI.FlatTabbedPaneLayout
-
- All Implemented Interfaces:
java.awt.LayoutManager
- Direct Known Subclasses:
FlatTabbedPaneUI.FlatTabbedPaneScrollLayout
- Enclosing class:
- FlatTabbedPaneUI
protected class FlatTabbedPaneUI.FlatTabbedPaneLayout extends javax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayoutLayout manager for wrap tab layout policy (and base class for scroll tab layout policy).Component hierarchy for wrap tab layout policy:
JTabbedPane +- 1...n tab content components +- (optional) BasicTabbedPaneUI.TabContainer (extends JPanel) | +- 1..n tab components (shown in tab area) +- (optional) ContainerUIResource (extends JPanel) | +- leading component +- (optional) ContainerUIResource (extends JPanel) +- trailing componentInstead of using
super.layoutContainer(Container)and fixing some component bounds, this class implementslayoutContainer(Container)and moves/resizes components only once. This avoids that some components are moved/resized twice, which would unnecessary repaint and relayout tabbed pane. In some special case this resulted in "endless" layouting and repainting when using nested tabbed panes (top and bottom tab placement) and RSyntaxTextArea (with enabled line-wrapping) as tab content.
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedFlatTabbedPaneLayout()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.awt.DimensioncalculateSize(boolean minimum)protected java.awt.DimensioncalculateTabAreaSize()Calculate preferred size of the tab area.(package private) java.awt.RectanglegetContentAreaLayoutBounds(int tabPlacement, java.awt.Insets tabAreaInsets)Returns bounds for content components.(package private) java.awt.RectanglegetTabAreaLayoutBounds(int tabPlacement, java.awt.Insets tabAreaInsets)Returns bounds for leading/trailing components and tab area.protected booleanisContentEmpty()Check whether all content components are eithernullor have zero preferred size.(package private) booleanisTabContainer(java.awt.Component c)protected voidlayoutChildComponent(java.awt.Component c, java.awt.Rectangle contentAreaBounds)protected voidlayoutChildComponents()voidlayoutContainer(java.awt.Container parent)protected voidlayoutContainerImpl()(package private) java.awt.RectanglelayoutLeftAndRightComponents(java.awt.Rectangle tr, int tabAreaAlignment, java.awt.Insets tabAreaInsets, boolean useTabAreaAlignment, boolean shiftTabs, boolean leftToRight)(package private) voidlayoutTabComponents(java.awt.Component tabContainer)Layouts custom components in tabs.private voidlayoutTabContainer(java.awt.Component tabContainer)Layouts container used for custom components in tabs.(package private) java.awt.RectanglelayoutTopAndBottomComponents(java.awt.Rectangle tr, int tabAreaAlignment, java.awt.Insets tabAreaInsets, boolean useTabAreaAlignment, boolean shiftTabs)-
Methods inherited from class javax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
addLayoutComponent, calculateLayoutInfo, calculateTabRects, minimumLayoutSize, normalizeTabRuns, padSelectedTab, padTabRun, preferredLayoutSize, preferredTabAreaHeight, preferredTabAreaWidth, removeLayoutComponent, rotateTabRuns
-
-
-
-
Method Detail
-
calculateSize
protected java.awt.Dimension calculateSize(boolean minimum)
- Overrides:
calculateSizein classjavax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
-
isContentEmpty
protected boolean isContentEmpty()
Check whether all content components are eithernullor have zero preferred size.If
true, assume that the tabbed pane is used without any content and use the size of the tab area (single run) as minimum/preferred size.
-
calculateTabAreaSize
protected java.awt.Dimension calculateTabAreaSize()
Calculate preferred size of the tab area. Used only ifisContentEmpty()returnstrue.
-
layoutContainer
public void layoutContainer(java.awt.Container parent)
- Specified by:
layoutContainerin interfacejava.awt.LayoutManager- Overrides:
layoutContainerin classjavax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
-
layoutContainerImpl
protected void layoutContainerImpl()
- Since:
- 3.3
-
layoutChildComponents
protected void layoutChildComponents()
- Since:
- 3.3
-
layoutChildComponent
protected void layoutChildComponent(java.awt.Component c, java.awt.Rectangle contentAreaBounds)- Since:
- 3.3
-
isTabContainer
boolean isTabContainer(java.awt.Component c)
-
layoutTabContainer
private void layoutTabContainer(java.awt.Component tabContainer)
Layouts container used for custom components in tabs.
-
layoutTabComponents
void layoutTabComponents(java.awt.Component tabContainer)
Layouts custom components in tabs.
-
getContentAreaLayoutBounds
java.awt.Rectangle getContentAreaLayoutBounds(int tabPlacement, java.awt.Insets tabAreaInsets)Returns bounds for content components.
-
getTabAreaLayoutBounds
java.awt.Rectangle getTabAreaLayoutBounds(int tabPlacement, java.awt.Insets tabAreaInsets)Returns bounds for leading/trailing components and tab area. Note: Returns bounds for first tabs row only. For multi-rows tabs in wrap mode, the returned bounds does not include full tab area.
-
layoutLeftAndRightComponents
java.awt.Rectangle layoutLeftAndRightComponents(java.awt.Rectangle tr, int tabAreaAlignment, java.awt.Insets tabAreaInsets, boolean useTabAreaAlignment, boolean shiftTabs, boolean leftToRight)
-
layoutTopAndBottomComponents
java.awt.Rectangle layoutTopAndBottomComponents(java.awt.Rectangle tr, int tabAreaAlignment, java.awt.Insets tabAreaInsets, boolean useTabAreaAlignment, boolean shiftTabs)
-
-