Подсветка addHighlight не меняет цвет текста

1

У меня есть JTextArea, в котором я выделяю некоторый текст, используя метод addHighlight для Highlighter, который я получаю от JTextArea. Он выделяет текст, но не меняет цвет текста выделенного текста на выбранный вами TextColor, который я установил.

Вот пример:

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

}
  • 0
    Подсветка и выделение - это разные вещи, подсветка не влияет на цвет текста
Теги:
swing
jtextarea
highlighting

1 ответ

0
Лучший ответ

Стоит прочитать об использовании текстовых компонентов

Изображение 174551

JTextArea не поддерживает эту функциональность для создания подмножества всего содержимого. Он применяет стили, но во всем содержимом.

Найти образец кода здесь, изменить определенный цвет текста в java

  • 1
    На самом деле, JTextArea имеет поддержку подсветки, как показано здесь и здесь
  • 0
    @MadProgrammer Могу ли я изменить цвет и шрифт выделенного текста только в JTextArea? Во втором примере кода это просто выделено. Это работает нормально, если OP делает одно изменение textArea.setForeground(Color.BLUE); дифференцировать это с выбором цвета.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню