JTextPane中重叠的高亮度文本颜色

Mat*_*ttG 2 java swing jtextpane

我创建了一个使用JTextPane的Swing接口.使用以下自定义颜色突出显示JTextPane:

textPane.getHighlighter().addHighlight(startPos, endPos, highlightPainter); 
Run Code Online (Sandbox Code Playgroud)

用户还能够以普通方式用光标突出显示文本.

我的问题是,我无法找到一种方法,突出显示的文字由荧光笔对象和光标选择着色为第三种不同的颜色.突出显示对象的突出显示始终优先.

我尝试使用CaretListener对象,但它只在用户手动突出显示后释放鼠标时触发事件.用户使用光标调整突出显示的区域时,我需要渲染重叠.

我甚至会对光标突出显示优先于突出显示对象的突出显示感到满意,但独特的重叠颜色是一个更好的功能.

以下问题与我的相似:

如何使用LayeredHighlighter - 一个突出显示另一个

但唯一的答案只是链接到覆盖GlassPane的方法.我更喜欢JTextPane或文档级解决方案,因为所选文本的值很重要

textPane.getSelectionStart();
Run Code Online (Sandbox Code Playgroud)

textPane.getSelectionEnd();
Run Code Online (Sandbox Code Playgroud)

cam*_*ckr 7

我甚至会对光标突出显示优先于突出显示对象的突出显示感到满意

JTextPane textPane = new JTextPane(...);
DefaultHighlighter highlighter =  (DefaultHighlighter)textPane.getHighlighter();
highlighter.setDrawsLayeredHighlights(false);
Run Code Online (Sandbox Code Playgroud)