我創建了一個使用JTextPane的Swing界面。 JTextPane使用自定義顏色突出顯示:JTextPane中重疊的高亮文本顏色
textPane.getHighlighter().addHighlight(startPos, endPos, highlightPainter);
用戶還可以用普通方式用光標高亮顯示文本。
我的問題是,我無法弄清楚突出顯示的熒光筆對象和光標選擇的文字的顏色第三,不同的顏色。突出顯示對象的突出顯示總是優先。
我嘗試使用CaretListener對象,但它只在用戶在手動突出顯示後釋放鼠標時觸發事件。我需要重疊來呈現,而用戶正在用光標調整高亮區域。
我甚至會對光標突出顯示優先於熒光筆對象的突出顯示而感到滿意,但唯一的重疊顏色是一個更好的功能。
以下問題是我相似:
How to use LayeredHighlighter - One highlight on top of another
,但唯一的答案只是鏈接到一個覆蓋方法,玻璃面板。我更喜歡的JTextPane或文檔級的解決方案,但是,因爲所選文本的價值是通過
textPane.getSelectionStart();
和
textPane.getSelectionEnd();
我不認爲'CaretListener'就夠了,它只會告訴「事後」的亮點。您可以直接將'ChangeListener'附加到'Caret'。看看[這個例子](http://stackoverflow.com/questions/18199593/in-java-swing-can-i-receive-caret-events-in-real-time/18200409#18200409)一些更多的細節 – MadProgrammer