Skip to content

Commit 08419d6

Browse files
committed
TabbedPane:
- added icon-only tab mode, which shows tab icons but hides tab titles - in "Show Hidden Tabs" popup menu, do not show text "x. Tab" if tab has icon but no title (issue #1062)
1 parent 3a72232 commit 08419d6

File tree

7 files changed

+119
-26
lines changed

7 files changed

+119
-26
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@ FlatLaf Change Log
88
- System File Chooser allows using **operating system file dialogs** in Java
99
Swing applications. (PR #988)
1010
- Zooming API. (PR #1051)
11+
- TabbedPane: Added icon-only tab mode, which shows tab icons but hides tab
12+
titles. Tab titles are used in "Show Hidden Tabs" popup menu. (set client
13+
property `JTabbedPane.tabWidthMode` to `"iconOnly"`)
1114

1215
#### Fixed bugs
1316

1417
- CheckBox and RadioButton: Fixed styling of custom icon. Also fixed focus width
1518
(and preferred size) if using custom icon. (PR #1060)
19+
- TabbedPane: In "Show Hidden Tabs" popup menu, do not show text "x. Tab" if tab
20+
has icon but no title. (issue #1062)
1621
- TextField: Fixed wrong leading/trailing icon placement if border is set to
1722
`null`. (issue #1047)
1823
- Extras: UI defaults inspector: Exclude inspector window from being blocked by

flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,8 +1086,9 @@ public interface FlatClientProperties
10861086
* <strong>Value type</strong> {@link java.lang.String}<br>
10871087
* <strong>Allowed Values</strong>
10881088
* {@link #TABBED_PANE_TAB_WIDTH_MODE_PREFERRED} (default),
1089-
* {@link #TABBED_PANE_TAB_WIDTH_MODE_EQUAL} or
1090-
* {@link #TABBED_PANE_TAB_WIDTH_MODE_COMPACT}
1089+
* {@link #TABBED_PANE_TAB_WIDTH_MODE_EQUAL},
1090+
* {@link #TABBED_PANE_TAB_WIDTH_MODE_COMPACT} or
1091+
* {@link #TABBED_PANE_TAB_WIDTH_MODE_ICON_ONLY}
10911092
*/
10921093
String TABBED_PANE_TAB_WIDTH_MODE = "JTabbedPane.tabWidthMode";
10931094

@@ -1113,6 +1114,14 @@ public interface FlatClientProperties
11131114
*/
11141115
String TABBED_PANE_TAB_WIDTH_MODE_COMPACT = "compact";
11151116

1117+
/**
1118+
* All tabs are smaller because they show only the tab icon, but no tab title.
1119+
*
1120+
* @see #TABBED_PANE_TAB_WIDTH_MODE
1121+
* @since 3.7
1122+
*/
1123+
String TABBED_PANE_TAB_WIDTH_MODE_ICON_ONLY = "iconOnly";
1124+
11161125
/**
11171126
* Specifies the tab icon placement (relative to tab title).
11181127
* <p>

flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ public class FlatTabbedPaneUI
205205
protected static final int WIDTH_MODE_PREFERRED = 0;
206206
protected static final int WIDTH_MODE_EQUAL = 1;
207207
protected static final int WIDTH_MODE_COMPACT = 2;
208+
/** @since 3.7 */ protected static final int WIDTH_MODE_ICON_ONLY = 3;
208209

209210
// tab rotation
210211
/** @since 3.3 */ protected static final int NONE = -1;
@@ -780,6 +781,7 @@ public Object getStyleableValue( JComponent c, String key ) {
780781
case WIDTH_MODE_PREFERRED: return TABBED_PANE_TAB_WIDTH_MODE_PREFERRED;
781782
case WIDTH_MODE_EQUAL: return TABBED_PANE_TAB_WIDTH_MODE_EQUAL;
782783
case WIDTH_MODE_COMPACT: return TABBED_PANE_TAB_WIDTH_MODE_COMPACT;
784+
case WIDTH_MODE_ICON_ONLY: return TABBED_PANE_TAB_WIDTH_MODE_ICON_ONLY;
783785
}
784786

785787
case "tabRotation":
@@ -926,9 +928,10 @@ private int calculateTabWidthImpl( int tabPlacement, int tabIndex, FontMetrics m
926928

927929
int tabWidth;
928930
Icon icon;
929-
if( tabWidthMode == WIDTH_MODE_COMPACT &&
930-
tabIndex != tabPane.getSelectedIndex() &&
931-
isHorizontalOrRotated( tabPlacement ) &&
931+
if( ((tabWidthMode == WIDTH_MODE_COMPACT &&
932+
tabIndex != tabPane.getSelectedIndex() &&
933+
isHorizontalOrRotated( tabPlacement )) ||
934+
tabWidthMode == WIDTH_MODE_ICON_ONLY) &&
932935
tabPane.getTabComponentAt( tabIndex ) == null &&
933936
(icon = getIconForTab( tabIndex )) != null )
934937
{
@@ -1247,7 +1250,8 @@ protected void paintTab( Graphics g, int tabPlacement, Rectangle[] rects,
12471250
Font font = tabPane.getFont();
12481251
FontMetrics metrics = tabPane.getFontMetrics( font );
12491252
boolean isCompact = (icon != null && !isSelected && getTabWidthMode() == WIDTH_MODE_COMPACT && isHorizontalOrRotated( tabPlacement ));
1250-
if( isCompact )
1253+
boolean isIconOnly = (icon != null && getTabWidthMode() == WIDTH_MODE_ICON_ONLY);
1254+
if( isCompact || isIconOnly )
12511255
title = null;
12521256
String clippedTitle = layoutAndClipLabel( tabPlacement, metrics, tabIndex, title, icon, tabRect, iconRect, textRect, isSelected );
12531257

@@ -1283,7 +1287,7 @@ protected void paintTab( Graphics g, int tabPlacement, Rectangle[] rects,
12831287
}
12841288

12851289
// paint title and icon
1286-
if( !isCompact )
1290+
if( !isCompact || isIconOnly )
12871291
paintText( g, tabPlacement, font, metrics, tabIndex, clippedTitle, textRect, isSelected );
12881292
paintIcon( g, tabPlacement, tabIndex, icon, iconRect, isSelected );
12891293
}
@@ -2160,6 +2164,7 @@ protected static int parseTabWidthMode( String str ) {
21602164
case TABBED_PANE_TAB_WIDTH_MODE_PREFERRED: return WIDTH_MODE_PREFERRED;
21612165
case TABBED_PANE_TAB_WIDTH_MODE_EQUAL: return WIDTH_MODE_EQUAL;
21622166
case TABBED_PANE_TAB_WIDTH_MODE_COMPACT: return WIDTH_MODE_COMPACT;
2167+
case TABBED_PANE_TAB_WIDTH_MODE_ICON_ONLY: return WIDTH_MODE_ICON_ONLY;
21632168
}
21642169
}
21652170

@@ -2508,7 +2513,7 @@ protected JMenuItem createTabMenuItem( int tabIndex ) {
25082513
// 2. text of label or text component in custom tab component (including children)
25092514
// 3. accessible name of tab
25102515
// 4. accessible name of custom tab component (including children)
2511-
// 5. string "n. Tab"
2516+
// 5. string "n. Tab", if tab does not have an icon
25122517
String title = tabPane.getTitleAt( tabIndex );
25132518
if( StringUtils.isEmpty( title ) ) {
25142519
Component tabComp = tabPane.getTabComponentAt( tabIndex );
@@ -2518,7 +2523,7 @@ protected JMenuItem createTabMenuItem( int tabIndex ) {
25182523
title = tabPane.getAccessibleContext().getAccessibleChild( tabIndex ).getAccessibleContext().getAccessibleName();
25192524
if( StringUtils.isEmpty( title ) && tabComp instanceof Accessible )
25202525
title = findTabTitleInAccessible( (Accessible) tabComp );
2521-
if( StringUtils.isEmpty( title ) )
2526+
if( StringUtils.isEmpty( title ) && tabPane.getIconAt( tabIndex ) == null )
25222527
title = (tabIndex + 1) + ". Tab";
25232528
}
25242529

@@ -2539,6 +2544,12 @@ protected JMenuItem createTabMenuItem( int tabIndex ) {
25392544
if( !tabPane.isEnabled() || !tabPane.isEnabledAt( tabIndex ) )
25402545
menuItem.setEnabled( false );
25412546

2547+
// make menu item smaller if it contains icon only
2548+
if( StringUtils.isEmpty( title ) ) {
2549+
menuItem.putClientProperty( FlatClientProperties.STYLE,
2550+
"minimumWidth: 0; textNoAcceleratorGap: 0; acceleratorArrowGap: 0" );
2551+
}
2552+
25422553
menuItem.addActionListener( e -> selectTab( tabIndex ) );
25432554
return menuItem;
25442555
}

flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@ TabbedPane.hiddenTabsNavigation = moreTabsButton
696696
TabbedPane.tabAreaAlignment = leading
697697
# allowed values: leading, trailing or center
698698
TabbedPane.tabAlignment = center
699-
# allowed values: preferred, equal or compact
699+
# allowed values: preferred, equal, compact or iconsOnly
700700
TabbedPane.tabWidthMode = preferred
701701
# allowed values: none, auto, left or right
702702
TabbedPane.tabRotation = none

flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/TabsPanel.java

Lines changed: 60 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class TabsPanel
6969
initTabWidthMode( widthPreferredTabbedPane, TABBED_PANE_TAB_WIDTH_MODE_PREFERRED );
7070
initTabWidthMode( widthEqualTabbedPane, TABBED_PANE_TAB_WIDTH_MODE_EQUAL );
7171
initTabWidthMode( widthCompactTabbedPane, TABBED_PANE_TAB_WIDTH_MODE_COMPACT );
72+
initTabWidthMode( widthIconOnlyTabbedPane, TABBED_PANE_TAB_WIDTH_MODE_ICON_ONLY );
7273
}
7374

7475
private void initTabPlacementTabs( JTabbedPane tabbedPane ) {
@@ -262,7 +263,9 @@ private void initTabAlignment( JTabbedPane tabbedPane, int tabAlignment ) {
262263

263264
private void initTabWidthMode( JTabbedPane tabbedPane, String tabWidthMode ) {
264265
tabbedPane.putClientProperty( TABBED_PANE_TAB_WIDTH_MODE, tabWidthMode );
265-
if( tabWidthMode.equals( TABBED_PANE_TAB_WIDTH_MODE_COMPACT ) ) {
266+
if( tabWidthMode.equals( TABBED_PANE_TAB_WIDTH_MODE_COMPACT ) ||
267+
tabWidthMode.equals( TABBED_PANE_TAB_WIDTH_MODE_ICON_ONLY ) )
268+
{
266269
tabbedPane.addTab( "Search", new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/search.svg", 16, 16 ), null );
267270
tabbedPane.addTab( "Recents", new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/RecentlyUsed.svg", 16, 16 ), null );
268271
tabbedPane.addTab( "Favorites", new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/favorite.svg", 16, 16 ), null );
@@ -390,6 +393,7 @@ private void initComponents() {
390393
widthPreferredTabbedPane = new JTabbedPane();
391394
widthEqualTabbedPane = new JTabbedPane();
392395
widthCompactTabbedPane = new JTabbedPane();
396+
widthIconOnlyTabbedPane = new JTabbedPane();
393397
JLabel minMaxTabWidthLabel = new JLabel();
394398
minimumTabWidthTabbedPane = new JTabbedPane();
395399
maximumTabWidthTabbedPane = new JTabbedPane();
@@ -684,6 +688,7 @@ private void initComponents() {
684688
"[]" +
685689
"[]" +
686690
"[]" +
691+
"[]" +
687692
"[]para" +
688693
"[]" +
689694
"[]" +
@@ -697,25 +702,56 @@ private void initComponents() {
697702
panel3.add(tabWidthModeLabel, "cell 0 0");
698703

699704
//---- tabWidthModeNoteLabel ----
700-
tabWidthModeNoteLabel.setText("(preferred/equal/compact)");
705+
tabWidthModeNoteLabel.setText("(preferred/equal/compact/iconOnly)");
701706
tabWidthModeNoteLabel.setEnabled(false);
702707
tabWidthModeNoteLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "small");
703708
panel3.add(tabWidthModeNoteLabel, "cell 0 1");
709+
710+
//======== widthPreferredTabbedPane ========
711+
{
712+
widthPreferredTabbedPane.putClientProperty(FlatClientProperties.TABBED_PANE_TAB_HEIGHT, 28);
713+
}
704714
panel3.add(widthPreferredTabbedPane, "cell 0 2");
715+
716+
//======== widthEqualTabbedPane ========
717+
{
718+
widthEqualTabbedPane.putClientProperty(FlatClientProperties.TABBED_PANE_TAB_HEIGHT, 28);
719+
}
705720
panel3.add(widthEqualTabbedPane, "cell 0 3");
721+
722+
//======== widthCompactTabbedPane ========
723+
{
724+
widthCompactTabbedPane.putClientProperty(FlatClientProperties.TABBED_PANE_TAB_HEIGHT, 28);
725+
}
706726
panel3.add(widthCompactTabbedPane, "cell 0 4");
707727

728+
//======== widthIconOnlyTabbedPane ========
729+
{
730+
widthIconOnlyTabbedPane.putClientProperty(FlatClientProperties.TABBED_PANE_TAB_HEIGHT, 28);
731+
}
732+
panel3.add(widthIconOnlyTabbedPane, "cell 0 5");
733+
708734
//---- minMaxTabWidthLabel ----
709735
minMaxTabWidthLabel.setText("Minimum/maximum tab width");
710736
minMaxTabWidthLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "h3");
711-
panel3.add(minMaxTabWidthLabel, "cell 0 5");
712-
panel3.add(minimumTabWidthTabbedPane, "cell 0 6");
713-
panel3.add(maximumTabWidthTabbedPane, "cell 0 7");
737+
panel3.add(minMaxTabWidthLabel, "cell 0 6");
738+
739+
//======== minimumTabWidthTabbedPane ========
740+
{
741+
minimumTabWidthTabbedPane.putClientProperty(FlatClientProperties.TABBED_PANE_TAB_HEIGHT, 28);
742+
}
743+
panel3.add(minimumTabWidthTabbedPane, "cell 0 7");
744+
745+
//======== maximumTabWidthTabbedPane ========
746+
{
747+
maximumTabWidthTabbedPane.putClientProperty(FlatClientProperties.TABBED_PANE_TAB_HEIGHT, 28);
748+
}
749+
panel3.add(maximumTabWidthTabbedPane, "cell 0 8");
714750

715751
//---- tabAlignmentLabel ----
716752
tabAlignmentLabel.setText("Tab title alignment");
717753
tabAlignmentLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "h3");
718-
panel3.add(tabAlignmentLabel, "cell 0 8");
754+
panel3.add(tabAlignmentLabel, "cell 0 9");
719755

720756
//======== panel5 ========
721757
{
@@ -742,17 +778,33 @@ private void initComponents() {
742778
tabAlignmentNoteLabel2.setEnabled(false);
743779
tabAlignmentNoteLabel2.putClientProperty(FlatClientProperties.STYLE_CLASS, "small");
744780
panel5.add(tabAlignmentNoteLabel2, "cell 1 0,alignx right,growx 0");
781+
782+
//======== tabAlignLeadingTabbedPane ========
783+
{
784+
tabAlignLeadingTabbedPane.putClientProperty(FlatClientProperties.TABBED_PANE_TAB_HEIGHT, 28);
785+
}
745786
panel5.add(tabAlignLeadingTabbedPane, "cell 0 1");
746787

747788
//======== tabAlignVerticalTabbedPane ========
748789
{
749790
tabAlignVerticalTabbedPane.setTabPlacement(SwingConstants.LEFT);
791+
tabAlignVerticalTabbedPane.putClientProperty(FlatClientProperties.TABBED_PANE_TAB_HEIGHT, 28);
750792
}
751793
panel5.add(tabAlignVerticalTabbedPane, "cell 1 1 1 4,growy");
794+
795+
//======== tabAlignCenterTabbedPane ========
796+
{
797+
tabAlignCenterTabbedPane.putClientProperty(FlatClientProperties.TABBED_PANE_TAB_HEIGHT, 28);
798+
}
752799
panel5.add(tabAlignCenterTabbedPane, "cell 0 2");
800+
801+
//======== tabAlignTrailingTabbedPane ========
802+
{
803+
tabAlignTrailingTabbedPane.putClientProperty(FlatClientProperties.TABBED_PANE_TAB_HEIGHT, 28);
804+
}
753805
panel5.add(tabAlignTrailingTabbedPane, "cell 0 3");
754806
}
755-
panel3.add(panel5, "cell 0 9");
807+
panel3.add(panel5, "cell 0 10");
756808
}
757809
panel6.add(panel3, "cell 2 0");
758810
}
@@ -1027,6 +1079,7 @@ private void initComponents() {
10271079
private JTabbedPane widthPreferredTabbedPane;
10281080
private JTabbedPane widthEqualTabbedPane;
10291081
private JTabbedPane widthCompactTabbedPane;
1082+
private JTabbedPane widthIconOnlyTabbedPane;
10301083
private JTabbedPane minimumTabWidthTabbedPane;
10311084
private JTabbedPane maximumTabWidthTabbedPane;
10321085
private JPanel panel5;

flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/TabsPanel.jfd

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
JFDML JFormDesigner: "8.2.0.0.331" Java: "21" encoding: "UTF-8"
1+
JFDML JFormDesigner: "8.3" encoding: "UTF-8"
22

33
new FormModel {
44
contentType: "form/swing"
@@ -337,7 +337,7 @@ new FormModel {
337337
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
338338
"$layoutConstraints": "insets 0,hidemode 3"
339339
"$columnConstraints": "[grow,fill]"
340-
"$rowConstraints": "[]0[][][][]para[][][]para[]0[]"
340+
"$rowConstraints": "[]0[][][][][]para[][][]para[]0[]"
341341
} ) {
342342
name: "panel3"
343343
auxiliary() {
@@ -355,7 +355,7 @@ new FormModel {
355355
} )
356356
add( new FormComponent( "javax.swing.JLabel" ) {
357357
name: "tabWidthModeNoteLabel"
358-
"text": "(preferred/equal/compact)"
358+
"text": "(preferred/equal/compact/iconOnly)"
359359
"enabled": false
360360
"$client.FlatLaf.styleClass": "small"
361361
auxiliary() {
@@ -366,19 +366,28 @@ new FormModel {
366366
} )
367367
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
368368
name: "widthPreferredTabbedPane"
369+
"$client.JTabbedPane.tabHeight": 28
369370
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
370371
"value": "cell 0 2"
371372
} )
372373
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
373374
name: "widthEqualTabbedPane"
375+
"$client.JTabbedPane.tabHeight": 28
374376
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
375377
"value": "cell 0 3"
376378
} )
377379
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
378380
name: "widthCompactTabbedPane"
381+
"$client.JTabbedPane.tabHeight": 28
379382
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
380383
"value": "cell 0 4"
381384
} )
385+
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
386+
name: "widthIconOnlyTabbedPane"
387+
"$client.JTabbedPane.tabHeight": 28
388+
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
389+
"value": "cell 0 5"
390+
} )
382391
add( new FormComponent( "javax.swing.JLabel" ) {
383392
name: "minMaxTabWidthLabel"
384393
"text": "Minimum/maximum tab width"
@@ -387,17 +396,19 @@ new FormModel {
387396
"JavaCodeGenerator.variableLocal": true
388397
}
389398
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
390-
"value": "cell 0 5"
399+
"value": "cell 0 6"
391400
} )
392401
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
393402
name: "minimumTabWidthTabbedPane"
403+
"$client.JTabbedPane.tabHeight": 28
394404
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
395-
"value": "cell 0 6"
405+
"value": "cell 0 7"
396406
} )
397407
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
398408
name: "maximumTabWidthTabbedPane"
409+
"$client.JTabbedPane.tabHeight": 28
399410
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
400-
"value": "cell 0 7"
411+
"value": "cell 0 8"
401412
} )
402413
add( new FormComponent( "javax.swing.JLabel" ) {
403414
name: "tabAlignmentLabel"
@@ -407,7 +418,7 @@ new FormModel {
407418
"JavaCodeGenerator.variableLocal": true
408419
}
409420
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
410-
"value": "cell 0 8"
421+
"value": "cell 0 9"
411422
} )
412423
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
413424
"$columnConstraints": "[grow,fill]para[fill]"
@@ -439,27 +450,31 @@ new FormModel {
439450
} )
440451
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
441452
name: "tabAlignLeadingTabbedPane"
453+
"$client.JTabbedPane.tabHeight": 28
442454
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
443455
"value": "cell 0 1"
444456
} )
445457
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
446458
name: "tabAlignVerticalTabbedPane"
447459
"tabPlacement": 2
460+
"$client.JTabbedPane.tabHeight": 28
448461
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
449462
"value": "cell 1 1 1 4,growy"
450463
} )
451464
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
452465
name: "tabAlignCenterTabbedPane"
466+
"$client.JTabbedPane.tabHeight": 28
453467
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
454468
"value": "cell 0 2"
455469
} )
456470
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
457471
name: "tabAlignTrailingTabbedPane"
472+
"$client.JTabbedPane.tabHeight": 28
458473
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
459474
"value": "cell 0 3"
460475
} )
461476
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
462-
"value": "cell 0 9"
477+
"value": "cell 0 10"
463478
} )
464479
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
465480
"value": "cell 2 0"

0 commit comments

Comments
 (0)