如何计算字符串的宽度(以像素为单位)?

时间:2013-08-20 05:50:00

标签: java string fonts width

如何计算Java中String的宽度(以像素为单位)? 例如,我有一个字符串说“Hello World!”。它的长度(以像素为单位),还考虑其字体系列和大小?

5 个答案:

答案 0 :(得分:4)

简而言之:问题取决于您使用的框架。例如,如果您使用的是AWT,并且拥有Graphics对象graphicsFont对象font,则可以执行以下操作:

FontMetrics metrics = graphics.getFontMetrics(font);
int width = metrics.stringWidth("Hello world!");

查看this了解详情。

答案 1 :(得分:2)

您可以尝试这样的事情

Graphics2D g2d = ...
Font font = ...
Rectangle2D r = font.getStringBounds("hello world!", g2d.getFontRenderContext());
System.out.println("(" + r.getWidth() + ", " + r.getHeight() + ")");

参考此doc,可能会对您有所帮助。

答案 2 :(得分:1)

根据您想要实现的目标,有多种方法可以达到您想要的效果,例如......

BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
FontMetrics fm = g2d.getFontMetrics();
System.out.println(fm.stringWidth("This is a simple test"));
g2d.dispose();

但这只是对BufferedImageGraphics背景的依赖,它不会转回来说像屏幕或打印机。

但是,只要您拥有Graphics上下文,就可以获得相同的结果。

显然,这个示例使用为Graphics上下文安装的默认字体,如果需要,可以更改...

答案 3 :(得分:0)

有几种方法可以做,如果文字是标签,你可以尝试label.getElement().getClientWidth();,如果你使用的是AWT,你可以使用Graphics.getFontMetrics然后FontMetrics.stringWidth

答案 4 :(得分:0)

您可以使用FontMetrics。 FontMetrics类定义了一个字体度量对象,它封装了有关特定字体在特定屏幕上呈现的信息。

您可以执行以下操作

    Font font = new Font("Verdana", Font.PLAIN, 10);  
    FontMetrics metrics = new FontMetrics(font) {  
    };  
    Rectangle2D bounds = metrics.getStringBounds("Hello World!", null);  
    int widthInPixels = (int) bounds.getWidth();