TITLE:Fontサイズをコンポーネントの幅に応じて変更する

Posted by at 2011-10-31

Fontサイズをコンポーネントの幅に応じて変更する

JTextPaneのフォントサイズをその幅に応じて自動変更します。

  • &jnlp;
  • &jar;
  • &zip;
AutomaticallyResizeFont.png

サンプルコード

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))しています。

参考リンク

コメント