TabbedPane: support rounded underline selection and rounded card tabs

This commit is contained in:
Karl Tauber
2023-07-31 13:36:18 +02:00
parent dfe4404a17
commit f1351a2093
14 changed files with 183 additions and 47 deletions

View File

@@ -5,6 +5,7 @@ FlatLaf Change Log
#### New features and improvements
- TabbedPane: Support rounded underline selection and rounded card tabs.
- Extras: Class `FlatSVGIcon` now uses [JSVG](https://github.com/weisJ/jsvg)
library (instead of svgSalamander) for rendering. JSVG provides improved SVG
rendering and uses less memory compared to svgSalamander. (PR #684)

View File

@@ -49,6 +49,7 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelEvent;
import java.awt.geom.Area;
import java.awt.geom.Path2D;
import java.awt.geom.Rectangle2D;
import java.beans.PropertyChangeEvent;
@@ -143,6 +144,11 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault TabbedPane.tabHeight int
* @uiDefault TabbedPane.tabSelectionHeight int
* @uiDefault TabbedPane.cardTabSelectionHeight int
* @uiDefault TabbedPane.tabArc int
* @uiDefault TabbedPane.tabSelectionArc int
* @uiDefault TabbedPane.cardTabArc int
* @uiDefault TabbedPane.selectedInsets Insets
* @uiDefault TabbedPane.tabSelectionInsets Insets
* @uiDefault TabbedPane.contentSeparatorHeight int
* @uiDefault TabbedPane.showTabSeparators boolean
* @uiDefault TabbedPane.tabSeparatorsFullHeight boolean
@@ -219,6 +225,11 @@ public class FlatTabbedPaneUI
@Styleable protected int tabHeight;
@Styleable protected int tabSelectionHeight;
/** @since 2 */ @Styleable protected int cardTabSelectionHeight;
/** @since 3.2 */ @Styleable protected int tabArc;
/** @since 3.2 */ @Styleable protected int tabSelectionArc;
/** @since 3.2 */ @Styleable protected int cardTabArc;
/** @since 3.2 */ @Styleable protected Insets selectedInsets;
/** @since 3.2 */ @Styleable protected Insets tabSelectionInsets;
@Styleable protected int contentSeparatorHeight;
@Styleable protected boolean showTabSeparators;
@Styleable protected boolean tabSeparatorsFullHeight;
@@ -344,6 +355,11 @@ public class FlatTabbedPaneUI
tabHeight = UIManager.getInt( "TabbedPane.tabHeight" );
tabSelectionHeight = UIManager.getInt( "TabbedPane.tabSelectionHeight" );
cardTabSelectionHeight = UIManager.getInt( "TabbedPane.cardTabSelectionHeight" );
tabArc = UIManager.getInt( "TabbedPane.tabArc" );
tabSelectionArc = UIManager.getInt( "TabbedPane.tabSelectionArc" );
cardTabArc = UIManager.getInt( "TabbedPane.cardTabArc" );
selectedInsets = UIManager.getInsets( "TabbedPane.selectedInsets" );
tabSelectionInsets = UIManager.getInsets( "TabbedPane.tabSelectionInsets" );
contentSeparatorHeight = UIManager.getInt( "TabbedPane.contentSeparatorHeight" );
showTabSeparators = UIManager.getBoolean( "TabbedPane.showTabSeparators" );
tabSeparatorsFullHeight = UIManager.getBoolean( "TabbedPane.tabSeparatorsFullHeight" );
@@ -1184,10 +1200,41 @@ public class FlatTabbedPaneUI
protected void paintTabBackground( Graphics g, int tabPlacement, int tabIndex,
int x, int y, int w, int h, boolean isSelected )
{
boolean isCard = (getTabType() == TAB_TYPE_CARD);
// fill whole tab background if tab is rounded or has insets
if( (!isCard && tabArc > 0) ||
(isCard && cardTabArc > 0) ||
(!isCard && selectedInsets != null &&
(selectedInsets.top != 0 || selectedInsets.left != 0 ||
selectedInsets.bottom != 0 || selectedInsets.right != 0)) )
{
Color background = tabPane.getBackgroundAt( tabIndex );
g.setColor( FlatUIUtils.deriveColor( background, tabPane.getBackground() ) );
g.fillRect( x, y, w, h );
}
// apply insets
if( !isCard && selectedInsets != null ) {
Insets insets = new Insets( 0, 0, 0, 0 );
rotateInsets( selectedInsets, insets, tabPane.getTabPlacement() );
x += scale( insets.left );
y += scale( insets.top );
w -= scale( insets.left + insets.right );
h -= scale( insets.top + insets.bottom );
}
// paint tab background
Color background = getTabBackground( tabPlacement, tabIndex, isSelected );
g.setColor( FlatUIUtils.deriveColor( background, tabPane.getBackground() ) );
g.fillRect( x, y, w, h );
if( !isCard && tabArc > 0 ) {
float arc = scale( (float) tabArc ) / 2f;
FlatUIUtils.paintSelection( (Graphics2D) g, x, y, w, h, null, arc, arc, arc, arc, 0 );
} else if( isCard && cardTabArc > 0 )
((Graphics2D)g).fill( createCardTabOuterPath( tabPlacement, x, y, w, h ) );
else
g.fillRect( x, y, w, h );
}
/** @since 2 */
@@ -1241,42 +1288,38 @@ public class FlatTabbedPaneUI
protected void paintCardTabBorder( Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h ) {
Graphics2D g2 = (Graphics2D) g;
float borderWidth = scale( (float) contentSeparatorHeight );
Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD );
path.append( createCardTabOuterPath( tabPlacement, x, y, w, h ), false );
path.append( createCardTabInnerPath( tabPlacement, x, y, w, h ), false );
g.setColor( (tabSeparatorColor != null) ? tabSeparatorColor : contentAreaColor );
g2.fill( path );
}
/** @since 3.2 */
protected Shape createCardTabOuterPath( int tabPlacement, int x, int y, int w, int h ) {
float arc = scale( (float) cardTabArc ) / 2f;
switch( tabPlacement ) {
default:
case TOP:
case BOTTOM:
// paint left and right tab border
g2.fill( new Rectangle2D.Float( x, y, borderWidth, h ) );
g2.fill( new Rectangle2D.Float( x + w - borderWidth, y, borderWidth, h ) );
break;
case LEFT:
case RIGHT:
// paint top and bottom tab border
g2.fill( new Rectangle2D.Float( x, y, w, borderWidth ) );
g2.fill( new Rectangle2D.Float( x, y + h - borderWidth, w, borderWidth ) );
break;
case TOP: return FlatUIUtils.createRoundRectanglePath( x, y, w, h, arc, arc, 0, 0 );
case BOTTOM: return FlatUIUtils.createRoundRectanglePath( x, y, w, h, 0, 0, arc, arc );
case LEFT: return FlatUIUtils.createRoundRectanglePath( x, y, w, h, arc, 0, arc, 0 );
case RIGHT: return FlatUIUtils.createRoundRectanglePath( x, y, w, h, 0, arc, 0, arc );
}
}
if( cardTabSelectionHeight <= 0 ) {
// if there is no tab selection indicator, paint a top border as well
switch( tabPlacement ) {
default:
case TOP:
g2.fill( new Rectangle2D.Float( x, y, w, borderWidth ) );
break;
case BOTTOM:
g2.fill( new Rectangle2D.Float( x, y + h - borderWidth, w, borderWidth ) );
break;
case LEFT:
g2.fill( new Rectangle2D.Float( x, y, borderWidth, h ) );
break;
case RIGHT:
g2.fill( new Rectangle2D.Float( x + w - borderWidth, y, borderWidth, h ) );
break;
}
/** @since 3.2 */
protected Shape createCardTabInnerPath( int tabPlacement, int x, int y, int w, int h ) {
float bw = scale( (float) contentSeparatorHeight );
float arc = (scale( (float) cardTabArc ) / 2f) - bw;
switch( tabPlacement ) {
default:
case TOP: return FlatUIUtils.createRoundRectanglePath( x + bw, y + bw, w - (bw * 2), h - bw, arc, arc, 0, 0 );
case BOTTOM: return FlatUIUtils.createRoundRectanglePath( x + bw, y, w - (bw * 2), h - bw, 0, 0, arc, arc );
case LEFT: return FlatUIUtils.createRoundRectanglePath( x + bw, y + bw, w - bw, h - (bw * 2), arc, 0, arc, 0 );
case RIGHT: return FlatUIUtils.createRoundRectanglePath( x, y + bw, w - bw, h - (bw * 2), 0, arc, 0, arc );
}
}
@@ -1324,38 +1367,62 @@ public class FlatTabbedPaneUI
? (isTabbedPaneOrChildFocused() ? underlineColor : inactiveUnderlineColor)
: disabledUnderlineColor );
// paint underline selection
boolean atBottom = (getTabType() != TAB_TYPE_CARD);
boolean isCard = (getTabType() == TAB_TYPE_CARD);
boolean atBottom = !isCard;
Insets contentInsets = atBottom
? ((!rotateTabRuns && runCount > 1 && !isScrollTabLayout() && getRunForTab( tabPane.getTabCount(), tabIndex ) > 0)
? new Insets( 0, 0, 0, 0 )
: getContentBorderInsets( tabPlacement ))
: null;
int tabSelectionHeight = scale( atBottom ? this.tabSelectionHeight : cardTabSelectionHeight );
int sx, sy;
int tabSelectionHeight = scale( isCard ? cardTabSelectionHeight : this.tabSelectionHeight );
float arc = scale( (float) (isCard ? cardTabArc : tabSelectionArc) ) / 2f;
int sx = x, sy = y, sw = w, sh = h;
switch( tabPlacement ) {
case TOP:
default:
sy = atBottom ? (y + h + contentInsets.top - tabSelectionHeight) : y;
g.fillRect( x, sy, w, tabSelectionHeight );
sh = tabSelectionHeight;
break;
case BOTTOM:
sy = atBottom ? (y - contentInsets.bottom) : (y + h - tabSelectionHeight);
g.fillRect( x, sy, w, tabSelectionHeight );
sh = tabSelectionHeight;
break;
case LEFT:
sx = atBottom ? (x + w + contentInsets.left - tabSelectionHeight) : x;
g.fillRect( sx, y, tabSelectionHeight, h );
sw = tabSelectionHeight;
break;
case RIGHT:
sx = atBottom ? (x - contentInsets.right) : (x + w - tabSelectionHeight);
g.fillRect( sx, y, tabSelectionHeight, h );
sw = tabSelectionHeight;
break;
}
// apply insets
if( !isCard && tabSelectionInsets != null ) {
Insets insets = new Insets( 0, 0, 0, 0 );
rotateInsets( tabSelectionInsets, insets, tabPane.getTabPlacement() );
sx += scale( insets.left );
sy += scale( insets.top );
sw -= scale( insets.left + insets.right );
sh -= scale( insets.top + insets.bottom );
}
// paint underline selection
if( arc <= 0 )
g.fillRect( sx, sy, sw, sh );
else {
if( isCard ) {
Area area = new Area( createCardTabOuterPath( tabPlacement, x, y, w, h ) );
area.intersect( new Area( new Rectangle2D.Float( sx, sy, sw, sh ) ) );
((Graphics2D)g).fill( area );
} else
FlatUIUtils.paintSelection( (Graphics2D) g, sx, sy, sw, sh, null, arc, arc, arc, arc, 0 );
}
}
/** @since 2.2 */

View File

@@ -671,7 +671,12 @@ SplitPaneDivider.gripGap = 2
TabbedPane.tabHeight = 32
TabbedPane.tabSelectionHeight = 3
TabbedPane.cardTabSelectionHeight = 2
TabbedPane.cardTabSelectionHeight = 3
TabbedPane.tabArc = 0
TabbedPane.tabSelectionArc = 0
TabbedPane.cardTabArc = 12
TabbedPane.selectedInsets = 0,0,0,0
TabbedPane.tabSelectionInsets = 0,0,0,0
TabbedPane.contentSeparatorHeight = 1
TabbedPane.showTabSeparators = false
TabbedPane.tabSeparatorsFullHeight = false

View File

@@ -261,6 +261,15 @@ Spinner.buttonPressedArrowColor = lighten($Spinner.buttonArrowColor,20%,derived
Spinner.buttonSeparatorWidth = 0
#---- TabbedPane ----
TabbedPane.tabSelectionHeight = 4
TabbedPane.cardTabSelectionHeight = 4
TabbedPane.tabArc = $Button.arc
TabbedPane.tabSelectionArc = $TabbedPane.tabSelectionHeight
TabbedPane.cardTabArc = $Button.arc
#---- TextArea ---
TextArea.disabledBackground = @disabledComponentBackground

View File

@@ -260,6 +260,15 @@ Spinner.buttonHoverArrowColor = lighten($Spinner.buttonArrowColor,20%,derived no
Spinner.buttonPressedArrowColor = lighten($Spinner.buttonArrowColor,30%,derived noAutoInverse)
#---- TabbedPane ----
TabbedPane.tabSelectionHeight = 4
TabbedPane.cardTabSelectionHeight = 4
TabbedPane.tabArc = $Button.arc
TabbedPane.tabSelectionArc = $TabbedPane.tabSelectionHeight
TabbedPane.cardTabArc = $Button.arc
#---- TextArea ---
TextArea.disabledBackground = @disabledComponentBackground

View File

@@ -732,6 +732,11 @@ public class TestFlatStyleableInfo
"tabHeight", int.class,
"tabSelectionHeight", int.class,
"cardTabSelectionHeight", int.class,
"tabArc", int.class,
"tabSelectionArc", int.class,
"cardTabArc", int.class,
"selectedInsets", Insets.class,
"tabSelectionInsets", Insets.class,
"contentSeparatorHeight", int.class,
"showTabSeparators", boolean.class,
"tabSeparatorsFullHeight", boolean.class,

View File

@@ -738,6 +738,11 @@ public class TestFlatStyleableValue
testInteger( c, ui, "tabHeight", 123 );
testInteger( c, ui, "tabSelectionHeight", 123 );
testInteger( c, ui, "cardTabSelectionHeight", 123 );
testInteger( c, ui, "tabArc", 123 );
testInteger( c, ui, "tabSelectionArc", 123 );
testInteger( c, ui, "cardTabArc", 123 );
testInsets( c, ui, "selectedInsets", 1,2,3,4 );
testInsets( c, ui, "tabSelectionInsets", 1,2,3,4 );
testInteger( c, ui, "contentSeparatorHeight", 123 );
testBoolean( c, ui, "showTabSeparators", false );
testBoolean( c, ui, "tabSeparatorsFullHeight", false );

View File

@@ -917,6 +917,11 @@ public class TestFlatStyling
ui.applyStyle( "tabHeight: 30" );
ui.applyStyle( "tabSelectionHeight: 3" );
ui.applyStyle( "cardTabSelectionHeight: 2" );
ui.applyStyle( "tabArc: 3" );
ui.applyStyle( "tabSelectionArc: 4" );
ui.applyStyle( "cardTabArc: 5" );
ui.applyStyle( "selectedInsets: 1,2,3,4" );
ui.applyStyle( "tabSelectionInsets: 1,2,3,4" );
ui.applyStyle( "contentSeparatorHeight: 1" );
ui.applyStyle( "showTabSeparators: false" );
ui.applyStyle( "tabSeparatorsFullHeight: false" );

View File

@@ -1037,7 +1037,8 @@ TabbedPane.buttonArc 6
TabbedPane.buttonHoverBackground #303234 HSL 210 4 20 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%)
TabbedPane.buttonInsets 2,1,2,1 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.buttonPressedBackground #282a2c HSL 210 5 16 com.formdev.flatlaf.util.DerivedColor [UI] darken(8%)
TabbedPane.cardTabSelectionHeight 2
TabbedPane.cardTabArc 12
TabbedPane.cardTabSelectionHeight 3
TabbedPane.closeArc 4
TabbedPane.closeCrossFilledSize 7.5
TabbedPane.closeCrossLineWidth 1
@@ -1068,18 +1069,22 @@ TabbedPane.labelShift 1
TabbedPane.light #2f3031 HSL 210 2 19 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.scrollButtonsPlacement both
TabbedPane.scrollButtonsPolicy asNeededSingle
TabbedPane.selectedInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.selectedLabelShift -1
TabbedPane.selectedTabPadInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.selectionFollowsFocus true
TabbedPane.shadow #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.showTabSeparators false
TabbedPane.tabAlignment center
TabbedPane.tabArc 0
TabbedPane.tabAreaAlignment leading
TabbedPane.tabAreaInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabHeight 32
TabbedPane.tabInsets 4,12,4,12 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabRunOverlay 0
TabbedPane.tabSelectionArc 0
TabbedPane.tabSelectionHeight 3
TabbedPane.tabSelectionInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabSeparatorsFullHeight false
TabbedPane.tabType underlined
TabbedPane.tabWidthMode preferred

View File

@@ -1042,7 +1042,8 @@ TabbedPane.buttonArc 6
TabbedPane.buttonHoverBackground #e0e0e0 HSL 0 0 88 com.formdev.flatlaf.util.DerivedColor [UI] darken(7% autoInverse)
TabbedPane.buttonInsets 2,1,2,1 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.buttonPressedBackground #d9d9d9 HSL 0 0 85 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse)
TabbedPane.cardTabSelectionHeight 2
TabbedPane.cardTabArc 12
TabbedPane.cardTabSelectionHeight 3
TabbedPane.closeArc 4
TabbedPane.closeCrossFilledSize 7.5
TabbedPane.closeCrossLineWidth 1
@@ -1073,18 +1074,22 @@ TabbedPane.labelShift 1
TabbedPane.light #e1e1e1 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.scrollButtonsPlacement both
TabbedPane.scrollButtonsPolicy asNeededSingle
TabbedPane.selectedInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.selectedLabelShift -1
TabbedPane.selectedTabPadInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.selectionFollowsFocus true
TabbedPane.shadow #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.showTabSeparators false
TabbedPane.tabAlignment center
TabbedPane.tabArc 0
TabbedPane.tabAreaAlignment leading
TabbedPane.tabAreaInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabHeight 32
TabbedPane.tabInsets 4,12,4,12 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabRunOverlay 0
TabbedPane.tabSelectionArc 0
TabbedPane.tabSelectionHeight 3
TabbedPane.tabSelectionInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabSeparatorsFullHeight false
TabbedPane.tabType underlined
TabbedPane.tabWidthMode preferred

View File

@@ -1047,7 +1047,8 @@ TabbedPane.buttonArc 12
TabbedPane.buttonHoverBackground #111111 HSL 0 0 7 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%)
TabbedPane.buttonInsets 2,1,2,1 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.buttonPressedBackground #0a0a0a HSL 0 0 4 com.formdev.flatlaf.util.DerivedColor [UI] darken(8%)
TabbedPane.cardTabSelectionHeight 2
TabbedPane.cardTabArc 12
TabbedPane.cardTabSelectionHeight 4
TabbedPane.closeArc 4
TabbedPane.closeCrossFilledSize 7.5
TabbedPane.closeCrossLineWidth 1
@@ -1078,18 +1079,22 @@ TabbedPane.labelShift 1
TabbedPane.light #cccccc19 10% HSLA 0 0 80 10 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.scrollButtonsPlacement both
TabbedPane.scrollButtonsPolicy asNeededSingle
TabbedPane.selectedInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.selectedLabelShift -1
TabbedPane.selectedTabPadInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.selectionFollowsFocus true
TabbedPane.shadow #1e1e1e HSL 0 0 12 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.showTabSeparators false
TabbedPane.tabAlignment center
TabbedPane.tabArc 12
TabbedPane.tabAreaAlignment leading
TabbedPane.tabAreaInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabHeight 32
TabbedPane.tabInsets 4,12,4,12 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabRunOverlay 0
TabbedPane.tabSelectionHeight 3
TabbedPane.tabSelectionArc 4
TabbedPane.tabSelectionHeight 4
TabbedPane.tabSelectionInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabSeparatorsFullHeight false
TabbedPane.tabType underlined
TabbedPane.tabWidthMode preferred

View File

@@ -1051,7 +1051,8 @@ TabbedPane.buttonArc 12
TabbedPane.buttonHoverBackground #e4e4e4 HSL 0 0 89 com.formdev.flatlaf.util.DerivedColor [UI] darken(7% autoInverse)
TabbedPane.buttonInsets 2,1,2,1 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.buttonPressedBackground #dddddd HSL 0 0 87 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse)
TabbedPane.cardTabSelectionHeight 2
TabbedPane.cardTabArc 12
TabbedPane.cardTabSelectionHeight 4
TabbedPane.closeArc 4
TabbedPane.closeCrossFilledSize 7.5
TabbedPane.closeCrossLineWidth 1
@@ -1082,18 +1083,22 @@ TabbedPane.labelShift 1
TabbedPane.light #1f1f1f26 15% HSLA 0 0 12 15 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.scrollButtonsPlacement both
TabbedPane.scrollButtonsPolicy asNeededSingle
TabbedPane.selectedInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.selectedLabelShift -1
TabbedPane.selectedTabPadInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.selectionFollowsFocus true
TabbedPane.shadow #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.showTabSeparators false
TabbedPane.tabAlignment center
TabbedPane.tabArc 12
TabbedPane.tabAreaAlignment leading
TabbedPane.tabAreaInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabHeight 32
TabbedPane.tabInsets 4,12,4,12 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabRunOverlay 0
TabbedPane.tabSelectionHeight 3
TabbedPane.tabSelectionArc 4
TabbedPane.tabSelectionHeight 4
TabbedPane.tabSelectionInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabSeparatorsFullHeight false
TabbedPane.tabType underlined
TabbedPane.tabWidthMode preferred

View File

@@ -1068,7 +1068,8 @@ TabbedPane.buttonArc 6
TabbedPane.buttonHoverBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.buttonInsets 2,1,2,1 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.buttonPressedBackground #ffc800 HSL 47 100 50 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.cardTabSelectionHeight 2
TabbedPane.cardTabArc 12
TabbedPane.cardTabSelectionHeight 3
TabbedPane.closeArc 999
TabbedPane.closeCrossFilledSize 6.5
TabbedPane.closeCrossLineWidth 2
@@ -1103,18 +1104,22 @@ TabbedPane.scrollButtonsPlacement both
TabbedPane.scrollButtonsPolicy asNeededSingle
TabbedPane.selectedBackground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.selectedForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.selectedInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.selectedLabelShift -1
TabbedPane.selectedTabPadInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.selectionFollowsFocus true
TabbedPane.shadow #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.showTabSeparators false
TabbedPane.tabAlignment center
TabbedPane.tabArc 0
TabbedPane.tabAreaAlignment leading
TabbedPane.tabAreaInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabHeight 32
TabbedPane.tabInsets 4,12,4,12 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabRunOverlay 0
TabbedPane.tabSelectionArc 0
TabbedPane.tabSelectionHeight 3
TabbedPane.tabSelectionInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
TabbedPane.tabSeparatorColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.tabSeparatorsFullHeight false
TabbedPane.tabType underlined

View File

@@ -831,6 +831,7 @@ TabbedPane.buttonArc
TabbedPane.buttonHoverBackground
TabbedPane.buttonInsets
TabbedPane.buttonPressedBackground
TabbedPane.cardTabArc
TabbedPane.cardTabSelectionHeight
TabbedPane.closeArc
TabbedPane.closeCrossFilledSize
@@ -868,18 +869,22 @@ TabbedPane.scrollButtonsPlacement
TabbedPane.scrollButtonsPolicy
TabbedPane.selectedBackground
TabbedPane.selectedForeground
TabbedPane.selectedInsets
TabbedPane.selectedLabelShift
TabbedPane.selectedTabPadInsets
TabbedPane.selectionFollowsFocus
TabbedPane.shadow
TabbedPane.showTabSeparators
TabbedPane.tabAlignment
TabbedPane.tabArc
TabbedPane.tabAreaAlignment
TabbedPane.tabAreaInsets
TabbedPane.tabHeight
TabbedPane.tabInsets
TabbedPane.tabRunOverlay
TabbedPane.tabSelectionArc
TabbedPane.tabSelectionHeight
TabbedPane.tabSelectionInsets
TabbedPane.tabSeparatorColor
TabbedPane.tabSeparatorsFullHeight
TabbedPane.tabType