JTabbedPaneのタブ文字列のあふれをフェードアウト効果に変更する
Total: 2001
, Today: 1
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JTabbedPane
のタブ文字列があふれる場合、…
記号で省略するのではなく、端付近の文字をフェードアウト効果で透明化します。
Screenshot
Advertisement
サンプルコード
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
デフォルトの省略記号…
で置換される
- JTabbedPaneのタブを等幅にしてタイトルをクリップを使用してタブ幅を等幅にし、あふれは
- 下:
JTabbedPane
のタブタイトル文字列を表示するJLabel
をフェードアウト効果であふれを表現するTextOverflowFadeLabel
に変更TextOverflowFadeLabel
はJLabelで文字列のあふれをフェードアウト効果に変更するを参照TextOverflowFadeLabel
はIcon
表示などに未対応のためJTabbedPane#setTabComponentAt(...)
で設定するタブタイトル用のコンポーネントにはIcon
のみ表示するJLabel
と文字列のみ表示するTextOverflowFadeLabel
の2
種類のコンポーネントをJPanel
に配置して代用