diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java index 98ca89c2..035038c4 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java @@ -133,6 +133,14 @@ public interface FlatClientProperties */ String TABBED_PANE_HAS_FULL_BORDER = "JTabbedPane.hasFullBorder"; + /** + * Specifies whether tab separators (if enabled) extend to tab height. + *

+ * Component {@link javax.swing.JTabbedPane}
+ * Value type {@link java.lang.Boolean} + */ + String TABBED_PANE_TAB_SEPARATORS_FULL_HEIGHT = "JTabbedPane.tabSeparatorsFullHeight"; + /** * Specifies the height of a tab. *

diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java index 7d6415fb..96e23dab 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java @@ -48,6 +48,7 @@ import com.formdev.flatlaf.util.UIScale; * * @clientProperty JTabbedPane.showTabSeparators boolean * @clientProperty JTabbedPane.hasFullBorder boolean + * @clientProperty JTabbedPane.tabSeparatorsFullHeight boolean * * * @@ -83,6 +84,7 @@ import com.formdev.flatlaf.util.UIScale; * @uiDefault TabbedPane.contentSeparatorHeight int * @uiDefault TabbedPane.showTabSeparators boolean * @uiDefault TabbedPane.hasFullBorder boolean + * @uiDefault TabbedPane.tabSeparatorsFullHeight boolean * * @author Karl Tauber */ @@ -105,6 +107,7 @@ public class FlatTabbedPaneUI protected boolean showTabSeparators; protected boolean hasFullBorder; protected boolean tabsOverlapBorder; + protected boolean tabSeparatorsFullHeight; public static ComponentUI createUI( JComponent c ) { return new FlatTabbedPaneUI(); @@ -130,6 +133,7 @@ public class FlatTabbedPaneUI showTabSeparators = UIManager.getBoolean( "TabbedPane.showTabSeparators" ); hasFullBorder = UIManager.getBoolean( "TabbedPane.hasFullBorder" ); tabsOverlapBorder = UIManager.getBoolean( "TabbedPane.tabsOverlapBorder" ); + tabSeparatorsFullHeight = UIManager.getBoolean( "TabbedPane.tabSeparatorsFullHeight" ); // scale textIconGap = scale( textIconGap ); @@ -307,7 +311,7 @@ public class FlatTabbedPaneUI !isLastInRun( tabIndex ) ) { float sepWidth = UIScale.scale( 1f ); - float offset = UIScale.scale( 5f ); + float offset = tabSeparatorsFullHeight ? 0.0f : UIScale.scale( 5f ); g.setColor( (tabSeparatorColor != null) ? tabSeparatorColor : contentAreaColor ); if( tabPlacement == LEFT || tabPlacement == RIGHT ) {