Гиперссылка Java JEditorPane не выходит из тега

Я пытаюсь использовать гиперссылки внутри JEditorPane для определенных слов, подобно идее щелчка слова, чтобы получить его определение. Когда слова вводятся в панель редактора, программа проверяет их по списку и заменяет перечисленные слова тегом <a href="..." >some word</a>.

Моя проблема в том, что после замены слова тегом я не могу заставить панель редактора прекратить добавлять любые последующие нажатия клавиш к тексту, расположенному внутри тега. Как выйти из тега <a>, чтобы снова начать нормально печатать?

И да, я знаю, что события гиперссылки срабатывают только тогда, когда панель редактора недоступна для редактирования. Я работаю над этим с помощью событий мыши.


person user1565671    schedule 20.08.2012    source источник


Ответы (3)


Может быть, этот http://java-sl.com/tip_autocreate_links.html может помочь

person StanislavL    schedule 20.08.2012

Я сам не работал с JEditorPanes, но похоже, что позиция курсора все еще находится внутри вставленного тега, а не снаружи. Таким образом, возможным решением может быть перемещение курсора перед позицией тега после замены слова.

person trappski    schedule 20.08.2012

поиграйте с методом setCaretPosition в JEditorPane; получить позицию конца тега; попробуйте что-то вроде этого:

HTMLDocument document = (HTMLDocument)editor.getDocument();
 int caretPos = editor.getCaretPosition();

 Element elem = document.getParagraphElement(caretPos);

 int pos = elem.getEndOffset();
 editor.setCaretPosition(pos)

тщательно проверяя длину документа, не устанавливая курсор в неправильное положение.

также помогает просмотр исходного кода редакторов Java wysiwg (например, shef)

person Jill    schedule 21.08.2012