概要

JTabbedPaneのタブ文字列があふれる場合、記号で省略するのではなく、端付近の文字をフェードアウト効果で透明化します。

サンプルコード

class TextOverflowFadeTabbedPane extends ClippedTitleTabbedPane {
  @Override public void insertTab(
        String title, Icon icon, Component component, String tip, int index) {
    super.insertTab(
        title, icon, component, Objects.toString(tip, title), index);
    JPanel p = new JPanel(new BorderLayout(2, 0));
    p.setOpaque(false);
    p.add(new JLabel(icon), BorderLayout.WEST);
    p.add(new TextOverflowFadeLabel(title));
    setTabComponentAt(index, p);
  }
}
View in GitHub: Java, Kotlin

解説

  • 上: デフォルトのJLabelを使用してタブタイトル文字列を表示
  • 下: JTabbedPaneのタブタイトル文字列を表示するJLabelをフェードアウト効果であふれを表現するTextOverflowFadeLabelに変更
    • TextOverflowFadeLabelJLabelで文字列のあふれをフェードアウト効果に変更するを参照
    • TextOverflowFadeLabelIcon表示などに未対応のためJTabbedPane#setTabComponentAt(...)で設定するタブタイトル用のコンポーネントにはIconのみ表示するJLabelと文字列のみ表示するTextOverflowFadeLabel2種類のコンポーネントをJPanelに配置して代用

参考リンク

コメント