为什么我在 jTextarea 中的文本不再突出显示?

Why is my text in the jTextarea not highlighted anymore?

我正在制作一个小型 Swing 应用程序并有一个 JTextarea,我希望在其中突出显示部分文本。

当我开始我的应用程序时。我指示要突出显示的行通过 "highlight()"

方法突出显示
    public static void highlight() {
    uihw.getTa().setSelectionStart(indexTxt[pencil]);//uihw is the ui instvar that has the jTextarea
    uihw.getTa().setSelectionEnd(indexTxt[pencil]+lines[pencil].length());
}

如此处所示:

现在,当我按下按钮时,它应该 select 下面的下一个项目并突出显示它。

    public static void buttonClicked(String f){
    if (pencil!=lines.length-1){
        pencil++;
    }
    highlight();
}

这就是突出显示停止工作的地方。 我可以一直浏览列表直到最后(所以我确定 selection 实际上已经完成)但是文本不再突出显示。

关于原因的任何想法?或者关于更好地实现我的突出显示功能的建议?

如果组件失去焦点,选择可能不可见。相反,您可以使用组件的荧光笔:

HighlightPainter highlightPainter = DefaultHighlighter.DefaultHighlightPainter(Color.BLUE);//
Highlighter highlighter = textArea.getHighlighter();
highlighter.addHighlight(start, end, highlightPainter);

如果希望颜色与选择颜色相同,可以使用

HighlightPainter highlightPainter = DefaultHighlighter.DefaultPainter;

或通过外观指定选择颜色

HighlightPainter highlightPainter = DefaultHighlighter.DefaultHighlightPainter(UIManager.getColor("TextArea.selectionBackground"));