geo*_*geo 5 java stack-overflow fonts awt fontmetrics
运行以下代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
产生这个错误:
线程“main”中的异常 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)
等等....
为什么?
这是一个解决方案:(
请参阅用户 Boris the Spider 在我的原始帖子上的评论)
import java.awt.Canvas;
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);
Canvas c = new Canvas();
FontMetrics fm = c.getFontMetrics(myFontTest);
int characterWidth=fm.charWidth('A');
System.out.println(characterWidth);
}
}
Run Code Online (Sandbox Code Playgroud)