在 Java 中计算字符串的显示宽度

2022-08-31 09:46:08

如何在Java中计算字符串的长度(以像素为单位)?

最好不要使用秋千。

编辑:我想使用Java2D中的drawString()绘制字符串,并使用长度进行自动换行。


答案 1

如果您只想使用AWT,则使用Graphics.getFontMetrics(可以选择指定字体,对于非默认字体)来获取,然后使用FontMetrics.stringWidth来查找指定字符串的宽度。FontMetrics

例如,如果您有一个名为 的变量,则可以使用:Graphicsg

int width = g.getFontMetrics().stringWidth(text);

对于其他工具包,您需要向我们提供更多信息 - 它始终依赖于工具包。


答案 2

它并不总是需要依赖于工具包,或者并不总是需要使用FontMetrics方法,因为它需要首先获得Web容器或无外设环境中不存在的图形对象。

我已经在Web servlet中对此进行了测试,它确实计算了文本宽度。

import java.awt.Font;
import java.awt.font.FontRenderContext;
import java.awt.geom.AffineTransform;

...

String text = "Hello World";
AffineTransform affinetransform = new AffineTransform();     
FontRenderContext frc = new FontRenderContext(affinetransform,true,true);     
Font font = new Font("Tahoma", Font.PLAIN, 12);
int textwidth = (int)(font.getStringBounds(text, frc).getWidth());
int textheight = (int)(font.getStringBounds(text, frc).getHeight());

向这些维度添加必要的值以创建任何所需的边距。


推荐