Как я могу позволить g.drawstring обрабатывать \ n?

1

Привет, я делаю викторину. Я хотел бы задать вопрос на экране. Если вопрос слишком длинный, я помещаю \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
    Я думаю, это то, что вы ищете \ n в Drawstring
Теги:
stringbuilder
paintcomponent
drawstring
string-split

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню