1

我在 Java JEditorPane 中显示文本,使用 HTML 来格式化文本。我还在设计一个在 JEditorPane 中查找文本的搜索功能,选择文本然后滚动到它。我的问题是创建一个算法,它将实际指定选择的开始和结束位置。

如果我只是简单地使用 myeditorpane.getText() 检索文本,然后在结果中找到搜索字符串,则错误的选择开始和结束位置会在选择错误的文本的情况下计算出来(标签会抛出计算)。我尝试通过在搜索文本之前执行替换所有函数 text.().replaceAll("\<.*?>","") 来删除 html 标签(此替换全部删除标签之间的所有文本)但仍然计算了错误的选择点(尽管我已经接近了:-))。

有没有人有一个简单的方法来做到这一点?

谢谢,

艾略特

4

2 回答 2

2

正如HighlightExample中所建议的,您可能希望使用基础Document文本,而不是原始文本。

于 2010-05-13T15:37:00.427 回答
1

您需要找到文本的起始位置。我猜是这样的:

int offset = editorPane().getDocument().getText().indexof(...);

然后滚动你可以使用:

editorPane.scrollRectToVisible( editorPane.viewToModel(offset) );

阅读文本和换行以获取更多信息。

于 2010-05-13T15:39:40.553 回答