概要

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

サンプルコード

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));
  }
});
View in GitHub: Java, Kotlin

解説

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

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

参考リンク

コメント