• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:Fontサイズをコンポーネントの幅に応じて変更する
#navi(../)
#tags(JTextPane, Font)
RIGHT:Posted by &author(aterai); at 2011-10-31
*Fontサイズをコンポーネントの幅に応じて変更する [#nc1570ed]
``JTextPane``のフォントサイズをその幅に応じて自動変更します。
---
category: swing
folder: AutomaticallyResizeFont
title: Fontサイズをコンポーネントの幅に応じて変更する
tags: [JTextPane, Font]
author: aterai
pubdate: 2011-10-31T15:45:05+09:00
description: JTextPaneのフォントサイズをその幅に応じて自動変更します。
image: https://lh6.googleusercontent.com/-RTjWJaRHh4E/Tq4_8nk91OI/AAAAAAAABEY/mwfxMScDHec/s800/AutomaticallyResizeFont.png
---
* 概要 [#summary]
`JTextPane`のフォントサイズをその幅に応じて自動変更します。

-&jnlp;
-&jar;
-&zip;
#download(https://lh6.googleusercontent.com/-RTjWJaRHh4E/Tq4_8nk91OI/AAAAAAAABEY/mwfxMScDHec/s800/AutomaticallyResizeFont.png)

//#screenshot
#ref(https://lh6.googleusercontent.com/-RTjWJaRHh4E/Tq4_8nk91OI/AAAAAAAABEY/mwfxMScDHec/s800/AutomaticallyResizeFont.png)

**サンプルコード [#a08244a3]
* サンプルコード [#sourcecode]
#code(link){{
private final Font font = new Font("monospaced", Font.PLAIN, 12);
private final Font font = new Font(Font.MONOSPACED, Font.PLAIN, 12);
private final JTextPane editor = new JTextPane() {
  float font_size = 0.0f;
  float font_size = 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) {
    if (Math.abs(font_size - f) > 1.0e-1) {
      setFont(font.deriveFont(f));
      font_size = f;
    }
    super.doLayout();
  }
};
}}

**解説 [#s5156525]
上記のサンプルでは、``JTextPane#doLayout``メソッドをオーバーライドし、幅の変更に応じて使用するフォントサイズを変更(``Font#deriveFont(float)``)しています。
* 解説 [#explanation]
上記のサンプルでは、`JTextPane#doLayout()`メソッドをオーバーライドし、その幅の変更に応じて使用するフォントのサイズを`Font#deriveFont(float)`メソッドで変更しています。

**参考リンク [#a4f85e17]
* 参考リンク [#reference]
- [http://harmoniccode.blogspot.com/2011/10/friday-fun-component-xi.html Harmonic Code: Friday Fun Component XI]

**コメント [#y79df6e3]
* コメント [#comment]
#comment
#comment