Java Swing How to - Highlight of discontinous string inside JTextArea








Question

We would like to know how to highlight of discontinous string inside JTextArea.

Answer

  /* w  w w  .  ja va2s.  c om*/
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;

public class Main extends JFrame {

  public Main() {
    JTextArea area = new JTextArea(5, 20);
    area.setText("this is a test.");
    String charsToHighlight = "aeiouAEIOU";
    Highlighter h = area.getHighlighter();
    h.removeAllHighlights();
    String text = area.getText().toUpperCase();
    for (int i = 0; i < text.length(); i += 1) {
      char ch = text.charAt(i);
      if (charsToHighlight.indexOf(ch) >= 0)
        try {
          h.addHighlight(i, i + 1, DefaultHighlighter.DefaultPainter);
        } catch (Exception ble) {
        }
    }
    this.getContentPane().add(area);

  }

  public static void main(String[] args) {
    JFrame frame = new Main();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.pack();
    frame.setVisible(true);
  }
}