Я делаю небольшую игру с текстовым полем. Текстовое поле будет рисовать строку, которая будет разделяться на несколько строк, чтобы вписаться в текстовое поле. У меня проблемы с разделением на несколько строк.Java разделяет строку на несколько строк
String[] line = new String[4];
int boxWidth = 200;
String MESSAGE = "This is a long message to make sure that the line separation works.";
String[] splitArray = null;
try {
splitArray = MESSAGE.split("\\s+"); //split the words of the sentence into an array
} catch (PatternSyntaxException e) {
CrashDumping.DumpCrash(e);
}
String cursentence = "";
int curleng = 0;
int curline = 0;
for (int i = 0; i < splitArray.length; i++) {
if (curleng + m.getStringWidth(splitArray[i], r.font1) <= boxWidth) {
curleng += m.getStringWidth(splitArray[i], r.font1);
cursentence += splitArray[i]; cursentence += " ";
} else {
line[curline] = cursentence;
cursentence = "";
curline++;
curleng = 0;
}
}
for (int i = 0; i < line.length; i++) {
System.out.println("Line " + i + " - " + line[i]);
}
int getStringWidth(String sentence, Font font)
является метод, который я написал, который возвращает ширину строки в пикселях. Этот метод работает; это не проблема.
public int getStringWidth(String text, Font font) {
AffineTransform affinetransform = new AffineTransform();
FontRenderContext frc = new FontRenderContext(affinetransform,true,true);
return (int)(font.getStringBounds(text, frc).getWidth());
}
Вывод должен выглядеть примерно так:
Line 0 - This is a long message to make sure
Line 1 - that the line separation works.
Line 2 - null
Line 3 - null
Но будет печатать только первую строку, последние 3 просто нуль. Поэтому по какой-то причине петля for
ломается после завершения первой строки.
Что здесь происходит?
вы ищете что-то вроде http://stackoverflow.com/questions/4212675/wrap-the-string-after-a-number-of-characters-word-wise-in-java? – Pshemo
@Pshemo не совсем, потому что, если я понял, что этот вопрос был нужен, это просто распечатать его, и мне нужно сохранить строки в переменных, чтобы получить к ним доступ, когда я их потом покажу, печать предназначена только для отладки. –
Вы должны связать текущее слово в ветке else. – rodrigoap