我在 JScrollPane 和 JTextField 中有一个带有自定义 html 文档(不是来自 URL)的 JEditorPane,以便用户可以输入文本,然后在编辑器窗格中突出显示该文本。在文本字段的 keyPressed 事件中,我在文档中搜索文本,将其包围:
<a name='spot'><span style='background-color: silver'>my text</span></a>
突出显示背景,然后将新文本设置为 JEditorPane。这一切都很好,但我也想将窗格滚动到新突出显示的文本。因此,在编辑器窗格的 documentListener 的 changedUpdate 方法中,我添加:
pane.scrollToReference("spot");
此调用在 BoxView.modelToView 内引发 ArrayIndexOutOfBoundsException。该方法在文本中找到我的“点”引用,但我在想也许视图还没有用新文本更新,所以当它试图滚动到那里时,它会失败。
我无法获得对视图的引用,而且我似乎找不到要监听的事件,这表明 JEditorPane 的视图已完全更新。有任何想法吗?
谢谢,
贾里德