如何更改 JLabel 字体的大小以采用最大大小
2022-08-31 11:47:33
我在容器中有一个。字体的 defaut 大小非常小。我希望文本的采取最大大小。JLabel
JLabel
我该怎么做?
我在容器中有一个。字体的 defaut 大小非常小。我希望文本的采取最大大小。JLabel
JLabel
我该怎么做?
label = new JLabel("A label");
label.setFont(new Font("Serif", Font.PLAIN, 14));
不是最漂亮的代码,但以下代码将为调用的字体选择适当的字体大小,以便内部文本尽可能适合内部而不会溢出标签:JLabel
label
Font labelFont = label.getFont();
String labelText = label.getText();
int stringWidth = label.getFontMetrics(labelFont).stringWidth(labelText);
int componentWidth = label.getWidth();
// Find out how much the font can grow in width.
double widthRatio = (double)componentWidth / (double)stringWidth;
int newFontSize = (int)(labelFont.getSize() * widthRatio);
int componentHeight = label.getHeight();
// Pick a new font size so it will not be larger than the height of label.
int fontSizeToUse = Math.min(newFontSize, componentHeight);
// Set the label's font size to the newly determined size.
label.setFont(new Font(labelFont.getName(), Font.PLAIN, fontSizeToUse));
基本上,代码查看 JLabel
中的文本通过使用 FontMetrics
对象占用了多少空间,然后使用该信息来确定可以使用的最大字体大小,而不会溢出 .JLabel
上面的代码可以插入到保存的方法中,或者当需要更改字体大小时将调用的某个方法中。paint
JFrame
JLabel
以下是上述代码的实际操作的屏幕截图:
(资料来源:coobird.net)