我创建了一个使用JTextPane的 Swing 界面。JTextPane 使用自定义颜色突出显示:
textPane.getHighlighter().addHighlight(startPos, endPos, highlightPainter);
用户还能够以普通方式用光标突出显示文本。
我的问题是,我无法想出一种方法,将由荧光笔对象和光标选择突出显示的文本着色为第三种不同的颜色。高亮对象的高亮总是优先。
我尝试使用CaretListener对象,但它仅在用户手动突出显示后释放鼠标时触发事件。当用户使用光标调整突出显示的区域时,我需要进行重叠渲染。
我什至会对光标突出显示优先于荧光笔对象的突出显示感到满意,但独特的重叠颜色是一个更可取的功能。
以下问题与我的类似:
如何使用 LayeredHighlighter - 一个突出显示在另一个之上
但唯一的答案只是链接到覆盖 GlassPane 的方法。但是,我更喜欢 JTextPane 或文档级解决方案,因为所选文本的值通过以下方式很重要
textPane.getSelectionStart();
和
textPane.getSelectionEnd();