荧光笔addHighlight不改变文本颜色

时间:2014-05-30 20:41:01

标签: java swing jtextarea highlighting

我有一个JTextArea,我在其中使用我从JTextArea获得的Highlighter的addHighlight方法突出显示一些文本。它突出显示文本,但它不会将突出显示的文本的文本颜色更改为我设置的selectedTextColor。

以下是一个例子:

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;
import javax.swing.text.Highlighter.HighlightPainter;

public class SSCCE {

    private JFrame frame;
    private JTextArea textArea;

    public SSCCE() {
        frame = new JFrame();
        frame.setTitle("Huge Text");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        textArea = new JTextArea("abcd abcd abcd");
        textArea.setBackground(Color.DARK_GRAY);
        textArea.setForeground(Color.LIGHT_GRAY);
        textArea.setSelectionColor(Color.LIGHT_GRAY);
        textArea.setSelectedTextColor(Color.DARK_GRAY);
        Highlighter highLighter = textArea.getHighlighter();
        HighlightPainter highLightPainter = new DefaultHighlighter.DefaultHighlightPainter(textArea.getSelectionColor());
        try {
            highLighter.addHighlight(0, 10, highLightPainter);
        } catch (BadLocationException e) {
            e.printStackTrace();
        }
        frame.add(new JScrollPane(textArea));

        frame.setSize(400, 350);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new SSCCE();
            }
        });
    }

}

1 个答案:

答案 0 :(得分:0)

值得一读Using Text Components

  • 如果您打算使用无样式文本组件,请选择文本字段,密码字段,格式化文本字段或文本区域。

  • 如果您打算使用样式化文字组件,请参阅How to Use Editor Panes and Text Panes

enter image description here

JTextArea不支持此功能来设置整个内容的子集。它适用于整个内容的样式。

在此处查找示例代码change specific text color in java