Как получить количество строк из 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();
Другие вопросы по тегам