【问题标题】:How can i let g.drawstring handle \n?我怎样才能让 g.drawstring 处理 \n?
【发布时间】:2014-06-03 10:54:23
【问题描述】:

您好,我正在制作一个测验应用程序。我想在屏幕上画出这个问题。如果问题太长,我会在字符串中放置一个 \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 而只是将单词粘贴在一起。

谢谢!

【问题讨论】:

标签: java paintcomponent stringbuilder drawstring string-split


【解决方案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();    
}

【讨论】:

    猜你喜欢
    • 2020-10-26
    • 2019-06-13
    • 2018-09-03
    • 1970-01-01
    • 2014-07-22
    • 2021-05-27
    • 2017-09-07
    • 2011-06-14
    • 1970-01-01
    相关资源
    最近更新 更多