Class FlatTabbedPaneUI.FlatTabbedPaneLayout

  • All Implemented Interfaces:
    LayoutManager
    Direct Known Subclasses:
    FlatTabbedPaneUI.FlatTabbedPaneScrollLayout
    Enclosing class:
    FlatTabbedPaneUI

    protected class FlatTabbedPaneUI.FlatTabbedPaneLayout
    extends BasicTabbedPaneUI.TabbedPaneLayout
    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 Detail

      • FlatTabbedPaneLayout

        protected FlatTabbedPaneLayout()
    • Method Detail

      • isContentEmpty

        protected boolean isContentEmpty()
        Check whether all content components are either null or 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 Dimension calculateTabAreaSize()
        Calculate preferred size of the tab area. Used only if isContentEmpty() returns true.
      • layoutContainerImpl

        protected void layoutContainerImpl()
        Since:
        3.3
      • layoutChildComponents

        protected void layoutChildComponents()
        Since:
        3.3
      • layoutChildComponent

        protected void layoutChildComponent​(Component c,
                                            Rectangle contentAreaBounds)
        Since:
        3.3