如何在没有Java的图形的情况下获得文本超前(stringWidth)?

时间:2015-09-28 09:08:58

标签: java swing awt fontmetrics

如何在Java中没有Graphics实例的情况下获得文本超前(stringWidth)?

doc examples中,stringWidth()取自FontMetrics,而FontMetrics取自Graphics

是否可以在没有Graphics的情况下获得相同的内容?

在下面的注释中说,Graphics是必需的,因为它包含FontRenderContext。但我有FontRenderContext,没有Graphics

所以,假设我FontRenderContext没有Graphics。我如何获得stringWidth()呢?

1 个答案:

答案 0 :(得分:5)

虽然"直接构建的FontRenderContext很可能不会代表任何实际的图形设备,并可能导致意外或不正确的结果,"您可以从TextLayout的实例中获取有用的指标,如herehere所示。

FontRenderContext frc = new FontRenderContext(null, false, false);
TextLayout layout = new TextLayout(text, font, frc);
System.out.println(layout.getBounds());

image