Class FlatTabbedPaneUI.FlatTabbedPaneLayout
java.lang.Object
javax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
com.formdev.flatlaf.ui.FlatTabbedPaneUI.FlatTabbedPaneLayout
- All Implemented Interfaces:
LayoutManager
- Direct Known Subclasses:
FlatTabbedPaneUI.FlatTabbedPaneScrollLayout
- Enclosing class:
FlatTabbedPaneUI
Layout 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 component
Instead of using super.layoutContainer(Container) and fixing some
component bounds, this class implements layoutContainer(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 -
Method Summary
Modifier and TypeMethodDescriptionprotected DimensioncalculateSize(boolean minimum) protected DimensionCalculate preferred size of the tab area.(package private) RectanglegetContentAreaLayoutBounds(int tabPlacement, Insets tabAreaInsets) Returns bounds for content components.(package private) RectanglegetTabAreaLayoutBounds(int tabPlacement, Insets tabAreaInsets) Returns bounds for leading/trailing components and tab area.protected booleanCheck whether all content components are eithernullor have zero preferred size.(package private) booleanprotected voidlayoutChildComponent(Component c, Rectangle contentAreaBounds) protected voidvoidlayoutContainer(Container parent) protected void(package private) RectanglelayoutLeftAndRightComponents(Rectangle tr, int tabAreaAlignment, Insets tabAreaInsets, boolean useTabAreaAlignment, boolean shiftTabs, boolean leftToRight) (package private) voidlayoutTabComponents(Component tabContainer) Layouts custom components in tabs.private voidlayoutTabContainer(Component tabContainer) Layouts container used for custom components in tabs.(package private) RectanglelayoutTopAndBottomComponents(Rectangle tr, int tabAreaAlignment, Insets tabAreaInsets, boolean useTabAreaAlignment, boolean shiftTabs)
-
Constructor Details
-
FlatTabbedPaneLayout
protected FlatTabbedPaneLayout()
-
-
Method Details
-
calculateSize
- Overrides:
calculateSizein classBasicTabbedPaneUI.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
Calculate preferred size of the tab area. Used only ifisContentEmpty()returnstrue. -
layoutContainer
- Specified by:
layoutContainerin interfaceLayoutManager- Overrides:
layoutContainerin classBasicTabbedPaneUI.TabbedPaneLayout
-
layoutContainerImpl
protected void layoutContainerImpl()- Since:
- 3.3
-
layoutChildComponents
protected void layoutChildComponents()- Since:
- 3.3
-
layoutChildComponent
-
isTabContainer
-
layoutTabContainer
Layouts container used for custom components in tabs. -
layoutTabComponents
Layouts custom components in tabs. -
getContentAreaLayoutBounds
-
getTabAreaLayoutBounds
-
layoutLeftAndRightComponents
-
layoutTopAndBottomComponents
-