<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Fjavax.swing.text%2FHighlighter</id>
		<title>Java by API/javax.swing.text/Highlighter - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Fjavax.swing.text%2FHighlighter"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/javax.swing.text/Highlighter&amp;action=history"/>
		<updated>2026-04-27T17:24:35Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_by_API/javax.swing.text/Highlighter&amp;diff=227&amp;oldid=prev</id>
		<title> в 17:43, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/javax.swing.text/Highlighter&amp;diff=227&amp;oldid=prev"/>
				<updated>2010-05-31T17:43:48Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:43, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_by_API/javax.swing.text/Highlighter&amp;diff=228&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/javax.swing.text/Highlighter&amp;diff=228&amp;oldid=prev"/>
				<updated>2010-05-31T14:12:19Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Highlighter: addHighlight(int p0, int p1, HighlightPainter p) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.text.BadLocationException;&lt;br /&gt;
import javax.swing.text.DefaultHighlighter;&lt;br /&gt;
import javax.swing.text.Highlighter;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
public class MultiHighlight implements ActionListener {&lt;br /&gt;
  private JTextComponent comp;&lt;br /&gt;
  private String charsToHighlight;&lt;br /&gt;
  public MultiHighlight(JTextComponent c, String chars) {&lt;br /&gt;
    comp = c;&lt;br /&gt;
    charsToHighlight = chars;&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent e) {&lt;br /&gt;
    Highlighter h = comp.getHighlighter();&lt;br /&gt;
    h.removeAllHighlights();&lt;br /&gt;
    String text = comp.getText().toUpperCase();&lt;br /&gt;
    for (int j = 0; j &amp;lt; text.length(); j += 1) {&lt;br /&gt;
      char ch = text.charAt(j);&lt;br /&gt;
      if (charsToHighlight.indexOf(ch) &amp;gt;= 0)&lt;br /&gt;
        try {&lt;br /&gt;
          h.addHighlight(j, j + 1, DefaultHighlighter.DefaultPainter);&lt;br /&gt;
        } catch (BadLocationException ble) {&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;MultiHighlight&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JTextArea area = new JTextArea(5, 20);&lt;br /&gt;
    area.setText(&amp;quot;ww\nw.jexp.c\nom&amp;quot;);&lt;br /&gt;
    frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);&lt;br /&gt;
    JButton b = new JButton(&amp;quot;Highlight All Vowels&amp;quot;);&lt;br /&gt;
    b.addActionListener(new MultiHighlight(area, &amp;quot;aeiouAEIOU&amp;quot;));&lt;br /&gt;
    frame.getContentPane().add(b, BorderLayout.SOUTH);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Highlighter: getHighlights() ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.text.Highlighter;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    JTextArea textComp = new JTextArea();&lt;br /&gt;
    removeHighlights(textComp);&lt;br /&gt;
  }&lt;br /&gt;
  public static void removeHighlights(JTextComponent textComp) {&lt;br /&gt;
    Highlighter hilite = textComp.getHighlighter();&lt;br /&gt;
    Highlighter.Highlight[] hilites = hilite.getHighlights();&lt;br /&gt;
    for (int i = 0; i &amp;lt; hilites.length; i++) {&lt;br /&gt;
      hilite.removeHighlight(hilites[i]);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Highlighter: removeAllHighlights() ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.text.BadLocationException;&lt;br /&gt;
import javax.swing.text.DefaultHighlighter;&lt;br /&gt;
import javax.swing.text.Highlighter;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
public class MultiHighlight implements ActionListener {&lt;br /&gt;
  private JTextComponent comp;&lt;br /&gt;
  private String charsToHighlight;&lt;br /&gt;
  public MultiHighlight(JTextComponent c, String chars) {&lt;br /&gt;
    comp = c;&lt;br /&gt;
    charsToHighlight = chars;&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent e) {&lt;br /&gt;
    Highlighter h = comp.getHighlighter();&lt;br /&gt;
    h.removeAllHighlights();&lt;br /&gt;
    String text = comp.getText().toUpperCase();&lt;br /&gt;
    for (int j = 0; j &amp;lt; text.length(); j += 1) {&lt;br /&gt;
      char ch = text.charAt(j);&lt;br /&gt;
      if (charsToHighlight.indexOf(ch) &amp;gt;= 0)&lt;br /&gt;
        try {&lt;br /&gt;
          h.addHighlight(j, j + 1, DefaultHighlighter.DefaultPainter);&lt;br /&gt;
        } catch (BadLocationException ble) {&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;MultiHighlight&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JTextArea area = new JTextArea(5, 20);&lt;br /&gt;
    area.setText(&amp;quot;ww\nw.jexp.c\nom&amp;quot;);&lt;br /&gt;
    frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);&lt;br /&gt;
    JButton b = new JButton(&amp;quot;Highlight All Vowels&amp;quot;);&lt;br /&gt;
    b.addActionListener(new MultiHighlight(area, &amp;quot;aeiouAEIOU&amp;quot;));&lt;br /&gt;
    frame.getContentPane().add(b, BorderLayout.SOUTH);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== implements Highlighter.HighlightPainter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.Shape;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.text.BadLocationException;&lt;br /&gt;
import javax.swing.text.Caret;&lt;br /&gt;
import javax.swing.text.DefaultCaret;&lt;br /&gt;
import javax.swing.text.Highlighter;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
public class LineHighlightPainter implements Highlighter.HighlightPainter {&lt;br /&gt;
  private void paintLine(Graphics g, Rectangle r, int x2) {&lt;br /&gt;
    int ytop = r.y + r.height - 3;&lt;br /&gt;
    g.fillRect(r.x, ytop, x2 - r.x, 3);&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g, int p0, int p1, Shape bounds, JTextComponent c) {&lt;br /&gt;
    Rectangle r0 = null, r1 = null, rbounds = bounds.getBounds();&lt;br /&gt;
    int xmax = rbounds.x + rbounds.width; &lt;br /&gt;
    try { &lt;br /&gt;
      r0 = c.modelToView(p0);&lt;br /&gt;
      r1 = c.modelToView(p1);&lt;br /&gt;
    } catch (BadLocationException ex) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    if ((r0 == null) || (r1 == null))&lt;br /&gt;
      return;&lt;br /&gt;
    g.setColor(c.getSelectionColor());&lt;br /&gt;
    // special case if p0 and p1 are on the same line&lt;br /&gt;
    if (r0.y == r1.y) {&lt;br /&gt;
      paintLine(g, r0, r1.x);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    // first line, from p1 to end-of-line&lt;br /&gt;
    paintLine(g, r0, xmax);&lt;br /&gt;
    // all the full lines in between, if any (assumes that all lines have&lt;br /&gt;
    // the same height--not a good assumption with JEditorPane/JTextPane)&lt;br /&gt;
    r0.y += r0.height; // move r0 to next line&lt;br /&gt;
    r0.x = rbounds.x; // move r0 to left edge&lt;br /&gt;
    while (r0.y &amp;lt; r1.y) {&lt;br /&gt;
      paintLine(g, r0, xmax);&lt;br /&gt;
      r0.y += r0.height; // move r0 to next line&lt;br /&gt;
    }&lt;br /&gt;
    // last line, from beginning-of-line to p1&lt;br /&gt;
    paintLine(g, r0, r1.x);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    // extend DefaultCaret as an anonymous inner class&lt;br /&gt;
    Caret lineHighlightPainterCaret = new DefaultCaret() {&lt;br /&gt;
      private Highlighter.HighlightPainter lhp = new LineHighlightPainter();&lt;br /&gt;
      // override getSelectionPainter to return the LineHighlightPainter&lt;br /&gt;
      protected Highlighter.HighlightPainter getSelectionPainter() {&lt;br /&gt;
        return lhp;&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;LineHighlightPainter demo&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JTextArea area = new JTextArea(9, 45);&lt;br /&gt;
    area.setCaret(lineHighlightPainterCaret);&lt;br /&gt;
    area.setLineWrap(true);&lt;br /&gt;
    area.setWrapStyleWord(true);&lt;br /&gt;
    area.setText(&amp;quot;This is the story\nof the hare who\nlost his spectacles.&amp;quot;);&lt;br /&gt;
    frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>