Java 应用DefaultHighlighter.DefaultHighlightPainter时,如何更改JTextPane中的文本选择颜色?

Java 应用DefaultHighlighter.DefaultHighlightPainter时,如何更改JTextPane中的文本选择颜色?,java,highlight,jtextpane,Java,Highlight,Jtextpane,我有一个JTextPane对象。我添加了DefaultHighlighter.DefaultHighlightPainter highlighter,如下所示: DefaultHighlighter.DefaultHighlightPainter high = new DefaultHighlighter.DefaultHighlightPainter(Color.GREEN); try { jTextPane1.getHighlighter().addHighlight(0, 20, h

我有一个JTextPane对象。我添加了DefaultHighlighter.DefaultHighlightPainter highlighter,如下所示:

DefaultHighlighter.DefaultHighlightPainter high = new DefaultHighlighter.DefaultHighlightPainter(Color.GREEN);
try {
   jTextPane1.getHighlighter().addHighlight(0, 20, high);
} catch (BadLocationException ex) {
   ex.printStackTrace();
}
UIManager.put("JTextPane.selectionBackground", new javax.swing.plaf.ColorUIResource(Color.YELLOW)); 
现在,我想用鼠标选择高亮显示文本。当我这样做时,文本的绿色部分不会以蓝色突出显示。我希望当我用鼠标选择它时,所有的文本都会以蓝色突出显示。我怎样才能解决这个问题

尝试将DefaultHighlighter替换为覆盖该方法的扩展Highlighter

从0开始

public void paintLayeredHighlights(Graphics g, int p0, int p1,
                                   Shape viewBounds,
                                   JTextComponent editor, View view) {
    for (int counter = highlights.size() - 1; counter >= 0; counter--) {
        HighlightInfo tag = highlights.elementAt(counter);
        if (tag instanceof LayeredHighlightInfo) {
            LayeredHighlightInfo lhi = (LayeredHighlightInfo)tag;
            int start = lhi.getStartOffset();
            int end = lhi.getEndOffset();
            if ((p0 < start && p1 > start) ||
                (p0 >= start && p0 < end)) {
                lhi.paintLayeredHighlights(g, p0, p1, viewBounds,
                                           editor, view);
            }
        }
    }
}

也许你可以试试这样的东西:

DefaultHighlighter.DefaultHighlightPainter high = new DefaultHighlighter.DefaultHighlightPainter(Color.GREEN);
try {
   jTextPane1.getHighlighter().addHighlight(0, 20, high);
} catch (BadLocationException ex) {
   ex.printStackTrace();
}
UIManager.put("JTextPane.selectionBackground", new javax.swing.plaf.ColorUIResource(Color.YELLOW)); 

在创建JTextPane之前执行此操作。

HighlightInfo类在描述时没有访问级别修饰符,因此我无法在扩展类中使用此类。抱歉,它没有帮助