您好我正在进行测验申请。我想在屏幕上画出问题。如果问题太长,我会在字符串中放置\ n,以便它应该转到换行符。但g.drawstring并没有意识到这一点\ n。
这是我的代码:
/* Draw the question*/
StringBuilder sb = new StringBuilder($question.getQuestion());
int x = 0;
while ((x = sb.indexOf(" ", x + 20)) != -1){
sb.replace(x, x + 1, "\n");
}
System.out.println(sb.toString());
g.drawString(sb.toString(), 125, 120);
我在控制台中输出的输出是:
哪位工程师做了
巴黎的埃菲尔铁塔?
所以代码工作正常,我怎么能让g.drawstring处理这个字符串呢?因为它绘制了这样的东西:哪位工程师在巴黎制造了埃菲尔铁塔。所以它没有读取\ n,只是将这些单词粘贴在一起。
谢谢!
答案 0 :(得分:1)
你可以为每一行使用drawString
Graphics2D g2d ;
String s = "hello\nworld";
int x = 0, y = 0;
String[] lines = s.split("\\n");
for(int i=0,l = lines.length;i<l;i++) {
String curLine = lines[i].trim();
FontMetrics fm = g2d.getFontMetrics();
Rectangle2D r = fm.getStringBounds(curLine, g2d);
g2d.drawString(curLine, x, y);
y += r.getHeight() + fm.getAscent();
}