• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JTabbedPaneのタブ幅を固定
#navi(../)
*JTabbedPaneのタブ幅を固定 [#ke4395dc]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2005-06-13~
更新日:&lastmod;
---
category: swing
folder: TabWidth
title: JTabbedPaneのタブ幅を固定
tags: [JTabbedPane]
author: aterai
pubdate: 2005-06-13T03:13:10+09:00
description: JTabbedPaneのタブ幅をできるだけ一定のサイズに固定します。
image: https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTVAYay_fI/AAAAAAAAAm8/1gWXosPj93A/s800/TabWidth.png
---
* 概要 [#summary]
`JTabbedPane`のタブ幅をできるだけ一定のサイズに固定します。

#contents
#download(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTVAYay_fI/AAAAAAAAAm8/1gWXosPj93A/s800/TabWidth.png)

**概要 [#p1be3f60]
JTabbedPaneのタブ幅をできるだけ一定のサイズに固定します。

#screenshot

**サンプルコード [#gf9ffe1b]
#code{{
 tab1.setUI(new javax.swing.plaf.basic.BasicTabbedPaneUI() {
   protected int calculateTabWidth(int tabPlacement, int tabIndex,
                                   FontMetrics metrics) {
     int i = super.calculateTabWidth(tabPlacement, tabIndex, metrics);
     return (i<100) ? 100 : i;
   }
 });
* サンプルコード [#sourcecode]
#code(link){{
tabbedPane.setUI(new BasicTabbedPaneUI() {
  @Override
  protected int calculateTabWidth(int placement, int index, FontMetrics metrics) {
    return Math.max(MIN_TAB_WIDTH, super.calculateTabWidth(placement, index, metrics));
  }
});
}}
-&jnlp;
-&jar;
-&zip;

**解説 [#vdaead36]
上記のサンプルでは、BasicTabbedPaneUIのcalculateTabWidthメソッドをオーバーライドして、下のJTabbedPaneのタブ幅がタイトル文字列の長さにかかわらず一定になるように指定しています。
* 解説 [#explanation]
上記のサンプルでは、`BasicTabbedPaneUI`の`calculateTabWidth`メソッドをオーバーライドして`JTabbedPane`のタブ幅がタイトル文字列の長さにかかわらず一定以上になるように設定しています。

JTabbedPaneのサイズが十分で無い場合、タブ列が二段になってタブは指定された幅を維持出来なくなります。

以下のように、htmlタグを使ってタブ幅を固定する方法もあります。
- タイトル文字列が短くても最低`MIN_TAB_WIDTH(100px)`のタブ幅を維持する
- タブランが`2`列以上になると指定されたタブ幅を維持できない場合がある
- 以下のように、`html`タグを使ってタブ幅を固定する方法もある
#code{{
 public String makeTitle(String title) {
   return "<html><table width='100'><tr><td align='center'>"+
           title+
          "</td></tr></table>";
 }
public String makeTitle(String title) {
  return "<html><table width='100'><tr><td align='center'>"
    + title + "</td></tr></table>";
}
}}

//**参考リンク
**コメント [#t721888e]
* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/plaf/basic/BasicTabbedPaneUI.html#calculateTabWidth-int-int-java.awt.FontMetrics- BasicTabbedPaneUI#calculateTabWidth(...) (Java Platform SE 8)]

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