Class FlatTabbedPaneUI.FlatTabbedPaneScrollLayout
- java.lang.Object
-
- javax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
-
- com.formdev.flatlaf.ui.FlatTabbedPaneUI.FlatTabbedPaneLayout
-
- com.formdev.flatlaf.ui.FlatTabbedPaneUI.FlatTabbedPaneScrollLayout
-
- All Implemented Interfaces:
java.awt.LayoutManager
- Enclosing class:
- FlatTabbedPaneUI
protected class FlatTabbedPaneUI.FlatTabbedPaneScrollLayout extends FlatTabbedPaneUI.FlatTabbedPaneLayout implements java.awt.LayoutManager
Layout manager used for scroll tab layout policy.Component hierarchy for scroll tab layout policy:
JTabbedPane +- 1...n tab content components +- BasicTabbedPaneUI.ScrollableTabViewport (extends JViewport) | +- BasicTabbedPaneUI.ScrollableTabPanel (extends JPanel) | +- (optional) BasicTabbedPaneUI.TabContainer (extends JPanel) | +- 1..n tab components (shown in tab area) +- FlatScrollableTabButton (scroll forward) +- FlatScrollableTabButton (scroll backward) +- FlatMoreTabsButton +- (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 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.Although this class delegates nearly all methods to the original layout manager
BasicTabbedPaneUI.TabbedPaneScrollLayout
, which extendsBasicTabbedPaneUI.TabbedPaneLayout
, it is necessary that this class also extendsBasicTabbedPaneUI.TabbedPaneLayout
to avoid aClassCastException
inBasicTabbedPaneUI
.ensureCurrentLayout().
-
-
Field Summary
Fields Modifier and Type Field Description private javax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
delegate
-
Constructor Summary
Constructors Modifier Constructor Description protected
FlatTabbedPaneScrollLayout(javax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addLayoutComponent(java.lang.String name, java.awt.Component comp)
void
calculateLayoutInfo()
protected java.awt.Dimension
calculateTabAreaSize()
Calculate preferred size of the tab area.protected void
layoutChildComponent(java.awt.Component c, java.awt.Rectangle contentAreaBounds)
protected void
layoutContainerImpl()
java.awt.Dimension
minimumLayoutSize(java.awt.Container parent)
java.awt.Dimension
preferredLayoutSize(java.awt.Container parent)
void
removeLayoutComponent(java.awt.Component comp)
-
Methods inherited from class com.formdev.flatlaf.ui.FlatTabbedPaneUI.FlatTabbedPaneLayout
calculateSize, getContentAreaLayoutBounds, getTabAreaLayoutBounds, isContentEmpty, isTabContainer, layoutChildComponents, layoutContainer, layoutLeftAndRightComponents, layoutTabComponents, layoutTopAndBottomComponents
-
Methods inherited from class javax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
calculateTabRects, normalizeTabRuns, padSelectedTab, padTabRun, preferredTabAreaHeight, preferredTabAreaWidth, rotateTabRuns
-
-
-
-
Method Detail
-
calculateLayoutInfo
public void calculateLayoutInfo()
- Overrides:
calculateLayoutInfo
in classjavax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
-
calculateTabAreaSize
protected java.awt.Dimension calculateTabAreaSize()
Description copied from class:FlatTabbedPaneUI.FlatTabbedPaneLayout
Calculate preferred size of the tab area. Used only ifFlatTabbedPaneUI.FlatTabbedPaneLayout.isContentEmpty()
returnstrue
.- Overrides:
calculateTabAreaSize
in classFlatTabbedPaneUI.FlatTabbedPaneLayout
-
preferredLayoutSize
public java.awt.Dimension preferredLayoutSize(java.awt.Container parent)
- Specified by:
preferredLayoutSize
in interfacejava.awt.LayoutManager
- Overrides:
preferredLayoutSize
in classjavax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
-
minimumLayoutSize
public java.awt.Dimension minimumLayoutSize(java.awt.Container parent)
- Specified by:
minimumLayoutSize
in interfacejava.awt.LayoutManager
- Overrides:
minimumLayoutSize
in classjavax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
-
addLayoutComponent
public void addLayoutComponent(java.lang.String name, java.awt.Component comp)
- Specified by:
addLayoutComponent
in interfacejava.awt.LayoutManager
- Overrides:
addLayoutComponent
in classjavax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
-
removeLayoutComponent
public void removeLayoutComponent(java.awt.Component comp)
- Specified by:
removeLayoutComponent
in interfacejava.awt.LayoutManager
- Overrides:
removeLayoutComponent
in classjavax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout
-
layoutContainerImpl
protected void layoutContainerImpl()
- Overrides:
layoutContainerImpl
in classFlatTabbedPaneUI.FlatTabbedPaneLayout
- Since:
- 3.3
-
layoutChildComponent
protected void layoutChildComponent(java.awt.Component c, java.awt.Rectangle contentAreaBounds)
- Overrides:
layoutChildComponent
in classFlatTabbedPaneUI.FlatTabbedPaneLayout
- Since:
- 3.3
-
-