JEditorPane - последняя строка - PullRequest
0 голосов
/ 09 ноября 2010

Используя JEditorPane, есть ли способ узнать, находится ли каретка в последней строке?Я не могу найти ничего в API или, что более важно, JTextComponent, из которого происходит JEditorPane.Мне нужно это выяснить, когда пользователь использует клавишу со стрелкой вниз для перемещения вниз по тексту.Моя текущая идея заключается в следующем:

private boolean isEndOfText() {
  int tmpCurrent = editor.getCaretPosition();

  editor.getActionMap().get(DefaultEditorKit.endLineAction).actionPerformed(null);
  int tmpEnd = editor.getCaretPosition();
  try { editor.setCaretPosition(tmpEnd + 1); } catch (Exception e) { editor.setCaretPosition(tmpCurrent); return true; }
  editor.setCaretPosition(tmpCurrent);
  return false;
}

Этот код будет запускаться всякий раз, когда нажата клавиша «Вниз», и будет возвращать информацию о том, действительно ли это конец текста, обнаруживая, если возникает ошибка, если символ вставкиставится после последней возможной позиции, которая будет концом строки (если это фактически последняя строка), в противном случае это означает, что конец текста не достигнут.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Вы должны иметь возможность использовать Текстовые утилиты . Один метод возвращает итоговые строки, а другой - строку в каретке.

Я никогда не играл с JEditorPane столько, сколько мне не нравится его поддержка HTML. Вы также можете использовать editor.getDocument (). GetLength (), чтобы определить, находится ли каретка в конце документа. Это будет работать с JTextArea или JTextPane, который отображает только текст, а не HTML. Не уверен, как это работает в JEditorPane.

1 голос
/ 09 ноября 2010

Возможно, есть лучший способ, но вы можете попробовать это:

return editor.getText().indexOf("\n", editor.getCaretPosition()) == -1;
...