在我的大学项目中,我需要显示球员的姓名和他们的分数。我希望它看起来像这样:
Name1 . . . . . . . . 1200
Another Name . . . . . . 3
A Very Very Long name . 2
为了知道点的数量,我需要知道屏幕上字符串的长度,所以所有字符串的长度都相同。
text.length不会有帮助,因为字母 likel占用的空间比Texample 少。
在网上看了一会儿,发现有人说,为了得到屏幕上字符串的长度,我可以这样做:
private int stringViewLength(String text) {
AffineTransform affinetransform = new AffineTransform();
FontRenderContext frc = new FontRenderContext(affinetransform, true, true);
Font font = new Font(FONT, Font.PLAIN, FONT_SIZE);
int textWidth = (int)(font.getStringBounds(text, frc).getWidth()); // This line causes problems
int textHeight = (int)(font.getStringBounds(text, frc).getHeight()); // Not in use
return textWidth;
}
问题是该行:
int textWidth = (int)(font.getStringBounds(text, frc).getWidth()); // This line causes problems
由于某种原因,将不允许程序运行。它不会抛出任何异常,也不会返回意外值,也不会关闭程序。经过调试,我看到只要执行了这一行,在main函数的末尾,由于某种原因,调用了里面的方法exit(),Thread但是当我注释这行时(并将return语句替换为一个const数字)显示在屏幕上。
什么会导致这个问题?谢谢!