JTextArea 或 JTextPane 设置突出显示的文本颜色

JTextArea or JTextPane Set Highlighted Text Color

我正在尝试更改 TextArea 或 TextPane 或什至任何其他内容中突出显示的颜色。

请注意,我正在寻找更改以下颜色的颜色:

而不是文字。

我也查看了 JTextAreasetHighlighter() 函数,但似乎我需要输入一个匿名的 Highlighter class完全不知道如何实现所有覆盖。

jta.setHighlighter(new Highlighter() {
    @Override
    public void removeHighlight(Object tag) {
        // TODO Auto-generated method stub

    }
    @Override
    public void removeAllHighlights() {
        // TODO Auto-generated method stub

    }
    @Override
    public void paint(Graphics g) {
        // TODO Auto-generated method stub

    }
    @Override
    public void install(JTextComponent c) {
        // TODO Auto-generated method stub

    }
    @Override
    public Highlight[] getHighlights() {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    public void deinstall(JTextComponent c) {
        // TODO Auto-generated method stub

    }
    @Override
    public void changeHighlight(Object tag, int p0, int p1)
            throws BadLocationException {
        // TODO Auto-generated method stub

    }
    @Override
    public Object addHighlight(int p0, int p1, HighlightPainter p)
            throws BadLocationException {
        // TODO Auto-generated method stub
        return null;
    }
});

如果您指的是 "normal" 突出显示颜色(当您将鼠标拖到文本上时),这可以通过

简单地实现
textArea.setSelectionColor(Color.LIGHT_GRAY);

(或您想要的任何颜色。)

如果您想以编程方式突出显示文本区域中的字符序列:

String searchedWord = "word";
int pos1 = textArea.getText().indexOf(searchedWord);
int pos2 = pos1 + searchedWord.length();
try {
    textArea.getHighlighter().addHighlight(pos1, pos2,
            new DefaultHighlighter.DefaultHighlightPainter(Color.LIGHT_GRAY));
} catch (BadLocationException e) {
    e.printStackTrace();
}

(同样适用于 JTextPane