【问题标题】:JTextArea or JTextPane Set Highlighted Text ColorJTextArea 或 JTextPane 设置突出显示的文本颜色
【发布时间】:2016-02-05 01:46:17
【问题描述】:

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

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

而不是文字。

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

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

【问题讨论】:

  • 您是否尝试过在paint(Graphics g) 方法中进行设置?喜欢g.setColor(Color.color);
  • 刚试过,他们只突出显示文本。他们也不会在您取消突出显示文本后取消突出显示它
  • 试试下面的答案应该对你有更多帮助

标签: java swing highlight jtextarea jtextpane


【解决方案1】:

如果您的意思是“正常”突出显示颜色(当您将鼠标拖到文本上时),这可以简单地实现

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)

【讨论】:

  • 两者都会导致文本颜色的改变。我的意思是,如上所示,改变荧光笔的颜色。也许我应该让指针不那么胖?
  • @MoonCheesez 真的吗?它不会改变我的文本颜色...Click me
  • 我想我找到了问题...我将颜色设置为new Color(26, 38, 59, 27) 因此它返回一个非常暗淡的高亮颜色,以至于我看不到它并将文本颜色设置为反转。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 2012-02-26
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多