【发布时间】:2014-04-06 08:12:23
【问题描述】:
运行以下代码:
import java.awt.Font;
import java.awt.FontMetrics;
public class MetricsTest {
public static void main(String[] args) {
Font myFontTest=new Font("Arial", Font.PLAIN, 11);
FontMetrics metrics = new FontMetrics(myFontTest) {};
int characterWidth=metrics.charWidth('A');
System.out.println(characterWidth);
}
}
产生这个错误:
线程“主”java.lang.StackOverflowError 中的异常
在 java.awt.FontMetrics.getWidths(FontMetrics.java:430)
在 java.awt.FontMetrics.charWidth(FontMetrics.java:333)
在 java.awt.FontMetrics.getWidths(FontMetrics.java:430)
在 java.awt.FontMetrics.charWidth(FontMetrics.java:333)
在 java.awt.FontMetrics.getWidths(FontMetrics.java:430)
等等……
为什么?
【问题讨论】:
-
你不能只创建一个
new FontMetrics,你需要从某个地方获取一个。你没有在 EDT 中运行,也没有 Swing 组件——字体没有被渲染,那么它怎么会有宽度? -
谢谢。它帮助我找到了解决方案
标签: java fonts awt stack-overflow fontmetrics