Как получить количество строк из jtextpane
Есть ли способ "извлечь" количество строк из заполненного текстом jtextpane? Если так, то работает ли он, если некоторые строки связаны с переносом текста?
3 ответа
Решение
Ты можешь использовать Utilities.getRowStart
определить "начало" линии для JTextPane
давая вам результат lineCount
, Это также будет работать, когда строки обернуты.
int totalCharacters = textPane.getText().length();
int lineCount = (totalCharacters == 0) ? 1 : 0;
try {
int offset = totalCharacters;
while (offset > 0) {
offset = Utilities.getRowStart(textPane, offset) - 1;
lineCount++;
}
} catch (BadLocationException e) {
e.printStackTrace();
}
Если вы определите "линию", сколько \n
символы есть в тексте JTextPane, тогда вы можете использовать:
JTextPane p = yourJTextPane;
System.out.println(p.getText().split("\n").length);
int rowCount =txtPane.getDocument().getDefaultRootElement().getElementCount();
Чтобы перейти к выбранной строке, я использовал этот код:
int rowSel = Integer.parseInt(tfGoLine.getText());
int rowGo = 0;
int lineCount = 0;
int totalCharacters = rowSel <= 1 ? 0 : text.getText().length();
try {
int last = -1;
for (int count = 0; count < totalCharacters; count++) {
int offset = Utilities.getRowStart(text, count);
if (last != offset) {
last = offset;
lineCount++;
rowGo = offset;
if (lineCount == rowSel) {
break;
}
}
}
} catch (BadLocationException e) {
}
text.getCaret().setDot(rowGo);
text.requestFocus();