TITLE:JTabbedPaneのタブ幅を固定

JTabbedPaneのタブ幅を固定

編集者:Terai Atsuhiro~

作成日:2005-06-13
更新日:2021-04-17 (土) 02:58:20
  • 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

概要

JTabbedPaneのタブ幅をできるだけ一定のサイズに固定します。

概要

JTabbedPaneのタブ幅をできるだけ一定のサイズに固定します。

#screenshot

サンプルコード

#spanend
 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;
   }
 });
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
tabbedPane.setUI(new BasicTabbedPaneUI() {
#spanend
  @Override
  protected int calculateTabWidth(int placement, int index, FontMetrics metrics) {
    return Math.max(MIN_TAB_WIDTH, super.calculateTabWidth(placement, index, metrics));
  }
#spanadd
});
#spanend
  • &jnlp;
  • &jar;
  • &zip;

解説

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

解説

上記のサンプルでは、BasicTabbedPaneUIcalculateTabWidthメソッドをオーバーライドしてJTabbedPaneのタブ幅がタイトル文字列の長さにかかわらず一定以上になるように設定しています。 JTabbedPaneのサイズが十分で無い場合、タブ列が二段になってタブは指定された幅を維持出来なくなります。 以下のように、htmlタグを使ってタブ幅を固定する方法もあります。
  • タイトル文字列が短くても最低MIN_TAB_WIDTH(100px)のタブ幅を維持する
  • タブランが2列以上になると指定されたタブ幅を維持できない場合がある
  • 以下のように、htmlタグを使ってタブ幅を固定する方法もある
     public String makeTitle(String title) {
       return "<html><table width='100'><tr><td align='center'>"+
               title+
              "</td></tr></table>";
     }
    #spanadd
    public String makeTitle(String title) {
    #spanend
      return "<html><table width='100'><tr><td align='center'>"
        + title + "</td></tr></table>";
    #spanadd
    }
    #spanend
    

コメント

参考リンク

コメント