不好意思问这个,因为还有一些关于同一主题的其他文章,但我没有设法将这些解决方案应用于我的问题。Java删除旧的亮点
简单情况。我有一个JTextPane
,我有一个搜索方法。它检测所有匹配的单词并将其突出显示为灰色为了浏览不同的比赛,我有第二个突出显示当前“活动”比赛红色的荧光笔。通过按下按钮,有效高光会转到下一场比赛。 (基本上chromes搜索的工作原理)
除去删除旧的活动荧光笔,一切都可以工作。有一种叫做.removeHighlight()
的方法,我需要删除旧的高亮区,但不管我插入什么参数,我会得到异常或者什么也没有发生。我会使用.removeAllHighlights()
,但是因为我有其他亮点(突出显示所有命中灰色),所以我将它们松开,所以我只能删除最后一个有效的高光。 官方oracle文档与removeHighlight(hilites[i])
做了一些事情,但老实说,我不知道那里发生了什么。 这里的代码我这么远:
private DefaultHighlightPainter highlightOne = new DefaultHighlightPainter(Color.RED);
private Object last;
public void paintAt(int pos){
try {
if (last != null){
motherFrame.tField.getHighlighter().removeHighlight(last);
}
last = motherFrame.tField.getHighlighter().addHighlight(pos, pos + searchWordLength, highlightOne);
} catch (BadLocationException e) {
//TODO
}
}
在这里,一峰:
UPDATE 这里是一个可运行:(很抱歉的乱码。)
http://hostcode.sourceforge.net/view/2563 and http://hostcode.sourceforge.net/view/2564
嗯好吧谢谢你的评论。我将尝试将搜索对话框提取为可运行的片段。 – Haeri 2014-11-05 22:09:30
好的我更新了OP。 – Haeri 2014-11-05 23:16:28
好的,谢谢你的时间。这是我的第一个Java应用程序,所以我仍然在学习东西。我会按照你所说的更新一切。 PS:我链接到一个外部网站,因为我还没有想出如何在这里发布长代码片段.. PSS:该死..我用一个空布局制作了每一个JDialog ..但它看起来不错我的系统.. :( – Haeri 2014-11-05 23:52:51