随着字符串长度的增加自动更改 Swing 组件中的字体大小
Automatically changing the font size in a Swing component as the string length increases
我有一个 JTextField
显示这样的行号:2 或 2.1 或 2.1.1 等。我希望 JTextField
的大小始终保持不变,但我想要字体大小 decrease/increase 以便文本始终完全显示并填充文本字段。
我想知道是否有一种简单的方法可以做到这一点(我不介意使用不同的 swing 组件)或者我是否必须手动完成,即检查文本的大小并更改文本字段尺寸?
我显然不想这样做,因为尺寸增量可能不是一个很好的数字,例如2.1 到 2.1.1.
我不知道有任何组件执行此操作,但您可以通过扩展 jTextField
并使用
FontMetrics.stringWidth()
确定字体大小(例如,在重载时 setText
)。
the JTextField becomes smaller as the font decreases.
文本字段的首选大小取决于字体。因此大小将随着字体大小的变化而 increase/decrease 。覆盖 JTextField
的 getPreferredSize()
方法以提供您自己的实现。
可能是这样的:
Font current = getFont();
setFont( UIManager.getFont("TextField.font") );
Dimension preferred = super.getPreferredSize();
setFont( current );
return preferred;
我有一个 JTextField
显示这样的行号:2 或 2.1 或 2.1.1 等。我希望 JTextField
的大小始终保持不变,但我想要字体大小 decrease/increase 以便文本始终完全显示并填充文本字段。
我想知道是否有一种简单的方法可以做到这一点(我不介意使用不同的 swing 组件)或者我是否必须手动完成,即检查文本的大小并更改文本字段尺寸?
我显然不想这样做,因为尺寸增量可能不是一个很好的数字,例如2.1 到 2.1.1.
我不知道有任何组件执行此操作,但您可以通过扩展 jTextField
并使用
FontMetrics.stringWidth()
确定字体大小(例如,在重载时 setText
)。
the JTextField becomes smaller as the font decreases.
文本字段的首选大小取决于字体。因此大小将随着字体大小的变化而 increase/decrease 。覆盖 JTextField
的 getPreferredSize()
方法以提供您自己的实现。
可能是这样的:
Font current = getFont();
setFont( UIManager.getFont("TextField.font") );
Dimension preferred = super.getPreferredSize();
setFont( current );
return preferred;