How to change the size of the font of a JLabel to take the maximum size(如何更改 JLabel 的字体大小以获取最大大小)
问题描述
我在容器中有一个 JLabel.字体的默认大小非常小.我希望 JLabel 的文本采用最大尺寸.
我该怎么做?
不是最漂亮的代码,但下面将为名为 label 的 JLabel 选择合适的字体大小> 使得里面的文字尽可能的贴合内部而不溢出标签:
字体 labelFont = label.getFont();字符串 labelText = label.getText();int stringWidth = label.getFontMetrics(labelFont).stringWidth(labelText);int componentWidth = label.getWidth();//找出字体的宽度可以增长多少.double widthRatio = (double)componentWidth/(double)stringWidth;int newFontSize = (int)(labelFont.getSize() * widthRatio);int componentHeight = label.getHeight();//选择一个新的字体大小,使其不会大于标签的高度.int fontSizeToUse = Math.min(newFontSize, componentHeight);//将标签的字体大小设置为新确定的大小.label.setFont(new Font(labelFont.getName(), Font.PLAIN, fontSizeToUse));基本上,代码会查看
(来源:coobird.net)
I have a JLabel in a Container.
The defaut size of the font is very small.
I would like that the text of the JLabel to take the maximum size.
How can I do that?
Not the most pretty code, but the following will pick an appropriate font size for a JLabel called label such that the text inside will fit the interior as much as possible without overflowing the 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));
Basically, the code looks at how much space the text in the JLabel takes up by using the FontMetrics object, and then uses that information to determine the largest font size that can be used without overflowing the text from the JLabel.
The above code can be inserted into perhaps the paint method of the JFrame which holds the JLabel, or some method which will be invoked when the font size needs to be changed.
The following is an screenshot of the above code in action:
(source: coobird.net)
这篇关于如何更改 JLabel 的字体大小以获取最大大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何更改 JLabel 的字体大小以获取最大大小
基础教程推荐
- 修改 void 函数的输入参数,然后读取 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
