Как реализовать highligting из discontinous строка на основе Deli

Этот совет Java иллюстрирует метод реализации highligting из discontinous строка на основе разделителя. Подчеркивая отзыв содержит многочисленные, разрозненные регионы текста компонента.



javax.swing



import javax.swing.*;

import javax.swing.text.*;

import java.awt.event.*;

import java.awt.BorderLayout;



public class MultiHighlight implements ActionListener {



  private JTextComponent comp;

  private String charsToHighlight;



  public MultiHighlight(JTextComponent c, String chars) {

    comp = c;

    charsToHighlight = chars;

  }



  public void actionPerformed(ActionEvent e) {

    // highlight all characters that appear in charsToHighlight

    Highlighter h = comp.getHighlighter();

    h.removeAllHighlights();

    String text = comp.getText().toUpperCase();



    for (int j=0; j < text.length(); j+=1) {

      char ch = text.charAt(j);

      if (charsToHighlight.indexOf(ch>= 0try {

        h.addHighlight(j, j+1, DefaultHighlighter.DefaultPainter);

      catch (BadLocationException ble) { }

    }

  }



  public static void main(String args[]) {

    JFrame frame = new JFrame("MultiHighlight");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTextArea area = new JTextArea(520);

    area.setText("This is the story\nof the hare who\nlost his spectacles.");

    frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);



    JButton b = new JButton("Highlight All Vowels");

    b.addActionListener(new MultiHighlight(area, "aeiouAEIOU"));

    frame.getContentPane().add(b, BorderLayout.SOUTH);

    frame.pack();

    frame.setVisible(true);

   }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>