不好意思問這個,因爲還有一些關於同一主題的其他文章,但我沒有設法將這些解決方案應用於我的問題。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