如何更改 JLabel 字体的大小以采用最大大小

2022-08-31 11:47:33

我在容器中有一个。字体的 defaut 大小非常小。我希望文本的采取最大大小。JLabelJLabel

我该怎么做?


答案 1
label = new JLabel("A label");
label.setFont(new Font("Serif", Font.PLAIN, 14));

摘自 How to Use HTML in Swing Components


答案 2

不是最漂亮的代码,但以下代码将为调用的字体选择适当的字体大小,以便内部文本尽可能适合内部而不会溢出标签:JLabellabel

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

上面的代码可以插入到保存的方法中,或者当需要更改字体大小时将调用的某个方法中。paintJFrameJLabel

以下是上述代码的实际操作的屏幕截图:

alt text
(资料来源:coobird.net


推荐