【问题标题】:Why is my text in the jTextarea not highlighted anymore?为什么我在 jTextarea 中的文本不再突出显示?
【发布时间】:2015-07-03 15:47:13
【问题描述】:

我正在制作一个小型 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());
}

如此处所示:

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

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

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

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

【问题讨论】:

  • 1) 从外观上看,JList 不是更适合您吗? 2) 您希望突出显示只是视觉效果,还是希望突出显示允许您复制突出显示的部分?
  • 只是视觉部分

标签: java swing highlight jtextarea


【解决方案1】:

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

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"));

【讨论】:

  • If you wish the color to be the same as a selection color - 你可以使用DefaultHighlighter.DefaultPainter,+1。
  • @camickr,太好了! API 在准确定义该对象的颜色时有点害羞。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 2020-12-17
  • 2013-06-26
  • 2013-10-25
  • 2020-02-14
  • 1970-01-01
相关资源
最近更新 更多