概要
JTextPane
のフォントサイズをその幅に応じて自動変更します。
Screenshot
Advertisement
サンプルコード
private final Font font = new Font(Font.MONOSPACED, Font.PLAIN, 12);
private final JTextPane editor = new JTextPane() {
private 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) {
setFont(font.deriveFont(f));
font_size = f;
}
super.doLayout();
}
};
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JTextPane#doLayout()
メソッドをオーバーライドし、その幅のリサイズに応じて使用するフォントのサイズをFont#deriveFont(float)
メソッドで変更しています。