Установка каретки в панели JEditor вызывает исключение - PullRequest
0 голосов
/ 26 марта 2010

У меня есть JeditorPane, в котором есть текст в формате HTML. Когда я выполняю следующую команду

int len ​​= editorPane.getText (). Length ();

Значение для len равно 7473. Но затем я пытаюсь сделать следующее:

editorPane.setCaretPosition (4995);

И я получаю следующее исключение: java.lang.IllegalArgumentException: плохая позиция: 4995

Насколько я понимаю, я должен получить это исключение, только если позиция, в которой я пытаюсь установить каретку, меньше 0 или больше длины текста. Это ни то, ни другое. Как это может быть.

Спасибо,

Эллиот

Ответы [ 2 ]

1 голос
/ 26 марта 2010
int len = editorPane.getText().length();

Дает вам длину текста и тегов.

Попробуйте использовать:

int len = editorPane.getDocument().getLength();

, который даст вам только длину текста в документе.

0 голосов
/ 26 марта 2010

Я думаю, что проблема в том, что текст содержит не только визуализируемые символы (у вас есть HTML-тег в тексте). Я полагаю, что setCaretPosition хочет получить видимую позицию текста.

Например, если text = "<b>123</b>" и вы звоните editorPane.setCaretPosition(2), я думаю, что каретка будет между '2' и '3';

...