---
category: swing
folder: TabbedPaneTabsOverlapBorder
title: JTabbedPaneのコンテナBorderを選択したタブで上書きする
tags: [JTabbedPane, UIManager, LookAndFeel, Border]
author: aterai
pubdate: 2022-11-28T06:14:07+09:00
description: JTabbedPaneのコンテナBorderを選択したタブで上書きするかを設定で切り替えます。
image: https://drive.google.com/uc?id=1sfAb3nfsGQIrtx4cdPc2PJhOF2oqow25
---
* 概要 [#summary]
`JTabbedPane`のコンテナ`Border`を選択したタブで上書きするかを設定で切り替えます。

#download(https://drive.google.com/uc?id=1sfAb3nfsGQIrtx4cdPc2PJhOF2oqow25)

* サンプルコード [#sourcecode]
#code(link){{
JTabbedPane tabs = makeTabbedPane();
tabs.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
List<JTabbedPane> list = Arrays.asList(makeTabbedPane(), tabs);

String key = "TabbedPane.tabsOverlapBorder";
JCheckBox check = new JCheckBox(key, UIManager.getBoolean(key)) {
  @Override public void updateUI() {
    super.updateUI();
    boolean b = UIManager.getLookAndFeelDefaults().getBoolean(key);
    setSelected(b);
    UIManager.put(key, b);
    list.forEach(SwingUtilities::updateComponentTreeUI);
  }
};
check.addActionListener(e -> {
  boolean b = ((JCheckBox) e.getSource()).isSelected();
  UIManager.put(key, b);
  list.forEach(SwingUtilities::updateComponentTreeUI);
});
}}

* 解説 [#explanation]
- `WindowsLookAndFeel`
-- デフォルトは`TabbedPane.tabsOverlapBorder`は`true`で`JTabbedPane`のコンテナ`Border`を選択したタブで上書きしてコンテナと選択タブが一体化した状態で描画される
-- デフォルトは`TabbedPane.tabsOverlapBorder: true`で`JTabbedPane`のコンテナ`Border`を選択したタブで上書きしてコンテナと選択タブが一体化した状態で描画される
-- `UIManager.put("TabbedPane.tabsOverlapBorder", false)`を設定すると選択タブのサイズが非選択タブと同じサイズまで縮小してコンテナ`Border`で区切られた状態で描画される
- `Windows Classic`
-- デフォルトは`TabbedPane.tabsOverlapBorder`は`false`だが、常に`JTabbedPane`のコンテナ`Border`を選択したタブで上書きしてコンテナと選択タブが一体化した状態で描画される
-- デフォルトは`TabbedPane.tabsOverlapBorder: false`だが、常に`JTabbedPane`のコンテナ`Border`を選択したタブで上書きしてコンテナと選択タブが一体化した状態で描画される
-- `UIManager.put("TabbedPane.tabsOverlapBorder", true)`を設定すると、`SCROLL_TAB_LAYOUT`の場合選択タブのサイズが拡大、`WRAP_TAB_LAYOUT`の場合タブの右`Border`がタブコンテナ内に延長して描画される
- `MetalLookAndFeel`
-- デフォルトは`TabbedPane.tabsOverlapBorder`は`false`だが、`JTabbedPane`のコンテナ`Border`を選択したタブで上書きしてコンテナと選択タブが一体化した状態で描画される
-- デフォルトは`TabbedPane.tabsOverlapBorder: false`だが、`JTabbedPane`のコンテナ`Border`を選択したタブで上書きしてコンテナと選択タブが一体化した状態で描画される
-- `UIManager.put("TabbedPane.tabsOverlapBorder", true)`を設定すると、`SCROLL_TAB_LAYOUT`の場合選択タブのサイズが拡大されてタブの右側が見切れてしまう
--- `WRAP_TAB_LAYOUT`の場合、選択タブサイズに変化はない
- `MotifLookAndFeel`
-- デフォルトは`TabbedPane.tabsOverlapBorder`は`false`だが、`JTabbedPane`のコンテナ`Border`を選択したタブで上書きしてコンテナと選択タブが一体化した状態で描画される
-- デフォルトは`TabbedPane.tabsOverlapBorder: false`だが、`JTabbedPane`のコンテナ`Border`を選択したタブで上書きしてコンテナと選択タブが一体化した状態で描画される
-- `UIManager.put("TabbedPane.tabsOverlapBorder", true)`を設定すると、`SCROLL_TAB_LAYOUT`の場合選択タブの高さが拡大、`WRAP_TAB_LAYOUT`の場合選択タブサイズに変化はない
- `NimbusLookAndFeel`
- `NimbusLookAndFeel`、`GTKLookAndFeel`
-- デフォルトは`TabbedPane.tabsOverlapBorder`は`false`だが、`true`を設定しても描画は変化しない
-- [[JTabbedPaneのNimbusLookAndFeelにおけるスタイルを変更する>Swing/NimbusTabbedPanePainter]]

* 参考リンク [#reference]
- [[JTabbedPaneのNimbusLookAndFeelにおけるスタイルを変更する>Swing/NimbusTabbedPanePainter]]

* コメント [#comment]
#comment
#comment