如何计算Java中String
的宽度(以像素为单位)? 例如,我有一个字符串说“Hello World!”。它的长度(以像素为单位),还考虑其字体系列和大小?
答案 0 :(得分:4)
简而言之:问题取决于您使用的框架。例如,如果您使用的是AWT,并且拥有Graphics
对象graphics
和Font
对象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();
但这只是对BufferedImage
和Graphics
背景的依赖,它不会转回来说像屏幕或打印机。
但是,只要您拥有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();