我试图在 aJEditorPane
中为某些单词使用超链接,类似于单击单词以获取其定义的想法。当单词被输入到编辑器窗格中时,程序会根据列表检查它们并用<a href="..." >some word</a>
标签替换列出的单词。
我的问题是,用标签替换单词后,我无法让编辑器窗格停止向标签内的文本添加任何后续击键。如何打破<a>
标签以再次开始正常输入?
是的,我知道超链接事件仅在编辑器窗格不可编辑时触发。我正在用鼠标事件解决这个问题。
我试图在 aJEditorPane
中为某些单词使用超链接,类似于单击单词以获取其定义的想法。当单词被输入到编辑器窗格中时,程序会根据列表检查它们并用<a href="..." >some word</a>
标签替换列出的单词。
我的问题是,用标签替换单词后,我无法让编辑器窗格停止向标签内的文本添加任何后续击键。如何打破<a>
标签以再次开始正常输入?
是的,我知道超链接事件仅在编辑器窗格不可编辑时触发。我正在用鼠标事件解决这个问题。
我自己没有使用过 JEditorPanes,但听起来光标位置仍然在插入的标签内而不是在外面。因此,一个可能的解决方案可能是在替换单词后将光标移动到标签位置的前面。
使用setCaretPosition
JEditorPane 上的方法;获取标签末尾的位置;尝试这样的事情:
HTMLDocument document = (HTMLDocument)editor.getDocument();
int caretPos = editor.getCaretPosition();
Element elem = document.getParagraphElement(caretPos);
int pos = elem.getEndOffset();
editor.setCaretPosition(pos)
小心检查文档的长度,不要将插入符号设置为错误的位置。
此外,查看所见即所得 Java 编辑器的源代码会有所帮助(例如 shef)