概要

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

サンプルコード

class TextOverfloFadeTabbedPane 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 TextOverfloFadeLabel(title));
    setTabComponentAt(index, p);
  }
}
view all

解説

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

参考リンク

コメント