我怎么能让g.drawstring处理\ n?

时间:2014-06-03 10:54:24

标签: java paintcomponent stringbuilder drawstring string-split

您好我正在进行测验申请。我想在屏幕上画出问题。如果问题太长,我会在字符串中放置\ 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,只是将这些单词粘贴在一起。

谢谢!

1 个答案:

答案 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();    
}