如何更改 JLabel 的字体大小以获取最大大小

新手上路,请多包涵

我在容器中有一个 JLabel 。字体的默认大小非常小。我希望 JLabel 的文本采用最大尺寸。

我怎样才能做到这一点?

原文由 g123k 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 960
2 个回答

不是最漂亮的代码,但以下代码将为 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));

基本上,代码通过使用 FontMetrics 对象查看 JLabel 中的文本占用了多少空间,然后使用该信息来确定可以在没有的情况下使用的最大字体大小从 JLabel 溢出文本。

上面的代码可以插入到 --- 的 JFrame paint 方法中,其中包含 JLabel ,或者当需要调用字体大小的某些方法时被改变。

以下是上述代码的实际截图:

替代文字

(来源: coobird.net

原文由 coobird 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题