我尝试在JEditorPane中为某些单词使用超链接,类似于单击一个单词来获取其定义的想法。在编辑器窗格中键入单词时,程序将根据列表检查这些单词,并使用<a href="..." >some word</a>标记替换列出的单词。
我的问题是,在将单词替换为标记后,我无法让编辑器窗格停止向位于标记内的文本添加任何后续击键。如何突破<a>标记,重新开始正常输入?
是的,我知道只有当编辑器窗格不可编辑时,才会触发超链接事件。我正在使用鼠标事件来解决这个问题。
发布于 2012-08-20 18:45:51
发布于 2012-08-20 18:45:17
我自己没有使用过JEditorPanes,但听起来光标位置仍然在插入的标记内部,而不是外部。因此,一种可能的解决方案可能是在替换单词后将光标移动到标记位置的前面。
发布于 2012-08-21 08:01:38
在JEditorPane上使用setCaretPosition方法;获取标记末尾的位置;尝试如下所示:
HTMLDocument document = (HTMLDocument)editor.getDocument();
int caretPos = editor.getCaretPosition();
Element elem = document.getParagraphElement(caretPos);
int pos = elem.getEndOffset();
editor.setCaretPosition(pos)注意检查文档的长度,不要把插入符号放在错误的位置。
此外,查看wysiwg java编辑器的源代码也会有所帮助(如shef)
https://stackoverflow.com/questions/12035925
复制相似问题