Swing/AutomaticallyResizeFont のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/AutomaticallyResizeFont へ行く。
TITLE:Fontサイズをコンポーネントの幅に応じて変更する
Posted by aterai at 2011-10-31
Fontサイズをコンポーネントの幅に応じて変更する
JTextPaneのフォントサイズをその幅に応じて自動変更します。
- &jnlp;
- &jar;
- &zip;
サンプルコード
private final Font font = new Font("monospaced", Font.PLAIN, 12);
private final JTextPane editor = new JTextPane() {
float font_size = 0.0f;
@Override public void doLayout() {
Insets i = getInsets();
float f = .08f * (getWidth() - i.left - i.right);
if(Math.abs(font_size-f) > 1.0e-1) {
setFont(font.deriveFont(f));
font_size = f;
}
super.doLayout();
}
};
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JTextPane#doLayoutメソッドをオーバーライドし、幅の変更に応じて使用するフォントサイズを変更(Font#deriveFont(float))しています。