JTabbedPaneの二段目以上に存在するタブボーダーの描画をタブコンテンツエリアまで延長する
Total: 1276, Today: 2, Yesterday: 3
Posted by aterai at
Last-modified:
Summary
NimbusLookAndFeelを適用したJTabbedPaneで二段目以上に存在するタブボーダーの描画をタブコンテンツエリアまで延長するかどうかを変更します。
Screenshot

Advertisement
Source Code Examples
// TEST: UIManager.put("TabbedPane.tabRunOverlay", -4);
// UIManager.put("TabbedPane.extendTabsToBase", Boolean.TRUE); // Default
// UIManager.put("TabbedPane.extendTabsToBase", Boolean.FALSE);
JTabbedPane tabbedPane = makeTabbedPane();
UIDefaults d = UIManager.getLookAndFeelDefaults();
d.put("TabbedPane.extendTabsToBase", Boolean.FALSE);
tabbedPane.putClientProperty("Nimbus.Overrides", d);
tabbedPane.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
View in GitHub: Java, KotlinDescription
- 上:
TabbedPane.extendTabsToBase: trueTabbedPane.extendTabsToBaseの設定はSynthLookAndFeelやNimbusLookAndFeelでのみ有効でデフォルトはtrue- かつ二段目以上に存在するタブだけに影響するのでタブレイアウトが
WRAP_TAB_LAYOUTの場合のみ有効
- かつ二段目以上に存在するタブだけに影響するのでタブレイアウトが
UIManager.put("TabbedPane.extendTabsToBase", ...)でNimbusLookAndFeelを適用する場合の初期値を変更可能TabbedPane.extendTabsToBaseをtrueに設定すると、たとえばタブ配置がTOPの場合二段目以上のタブの下辺がタブコンテンツエリアの上辺まで拡張して描画される- 拡張されるのは描画のみでマウスカーソルで拡張された領域をクリックしても無視される
- 下:
TabbedPane.extendTabsToBase: false- 個別の
JTabbedPaneに設定するためUIDefaults#put("TabbedPane.extendTabsToBase", Boolean.FALSE)を上書きしたUIDefaultsをJTabbedPane#putClientProperty("Nimbus.Overrides", UIDefaults)で設定している TabbedPane.extendTabsToBaseをfalseに設定すると、たとえばタブ配置がTOPの場合二段目以上のタブの下辺がタブサイズの位置に描画されてタブコンテンツエリアまでつながらない- 上記のスクリーンショットでいうと
JSplitPaneタブとJTreeタブの右辺が一直線にはならない - デフォルトの
JTabbedPaneでは違いが微妙だがUIManager.put("TabbedPane.tabRunOverlay", -4)などでタブランの重なりを逆に広げてみると分かりやすいかもしれない - JTabbedPaneのタブ・ランの回転を無効にする
- 上記のスクリーンショットでいうと
- 個別の