<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSwing_JFC%2FJTextComponent</id>
		<title>Java/Swing JFC/JTextComponent - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSwing_JFC%2FJTextComponent"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Swing_JFC/JTextComponent&amp;action=history"/>
		<updated>2026-04-07T06:11:22Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/Swing_JFC/JTextComponent&amp;diff=7447&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Swing_JFC/JTextComponent&amp;diff=7447&amp;oldid=prev"/>
				<updated>2010-06-01T06:45:31Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&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;Версия 06:45, 1 июня 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>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/Swing_JFC/JTextComponent&amp;diff=7446&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Swing_JFC/JTextComponent&amp;diff=7446&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Better way to set the selection ==&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.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent c = new JTextArea();&lt;br /&gt;
    c.select(10, 20);&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;
== Creating a Custom Editing Command for a JTextComponent ==&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.event.ActionEvent;&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.KeyStroke;&lt;br /&gt;
import javax.swing.text.Document;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
import javax.swing.text.TextAction;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    JTextArea comp = new JTextArea();&lt;br /&gt;
    String actionName = &amp;quot;Lowercase&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.add(new JScrollPane(comp));&lt;br /&gt;
    f.setSize(300,300);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
    comp.getInputMap().put(KeyStroke.getKeyStroke(&amp;quot;F2&amp;quot;), actionName);&lt;br /&gt;
    comp.getActionMap().put(actionName, new TextAction(actionName) {&lt;br /&gt;
      public void actionPerformed(ActionEvent evt) {&lt;br /&gt;
        JTextComponent comp = getTextComponent(evt);&lt;br /&gt;
        if (comp.getSelectionStart() == comp.getSelectionEnd()) {&lt;br /&gt;
          if (comp.getCaretPosition() &amp;lt; comp.getDocument().getLength()) {&lt;br /&gt;
            try {&lt;br /&gt;
              int pos = comp.getCaretPosition();&lt;br /&gt;
              Document doc = comp.getDocument();&lt;br /&gt;
              String str = doc.getText(pos, 1).toLowerCase();&lt;br /&gt;
              doc.remove(pos, 1);&lt;br /&gt;
              doc.insertString(pos, str, null);&lt;br /&gt;
              comp.moveCaretPosition(pos + 1);&lt;br /&gt;
            } catch (Exception e) {&lt;br /&gt;
              System.out.println();&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        } else {&lt;br /&gt;
          int s = comp.getSelectionStart();&lt;br /&gt;
          int e = comp.getSelectionEnd();&lt;br /&gt;
          comp.replaceSelection(comp.getSelectedText().toLowerCase());&lt;br /&gt;
          comp.select(s, e);&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;/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;
== Enabling Text-Dragging on a JTextComponent ==&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.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    JTextComponent textComp = new JTextArea();&lt;br /&gt;
    textComp.setDragEnabled(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;
== Enumerating All the Views in a JTextComponent ==&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.JTextPane;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
import javax.swing.text.View;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent textComp = new JTextPane();&lt;br /&gt;
    View v = textComp.getUI().getRootView(textComp);&lt;br /&gt;
    walkView(v, 0);&lt;br /&gt;
  }&lt;br /&gt;
  public static void walkView(View view, int level) {&lt;br /&gt;
    int n = view.getViewCount();&lt;br /&gt;
    for (int i = 0; i &amp;lt; n; i++) {&lt;br /&gt;
      walkView(view.getView(i), level + 1);&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;
== Filter all editing operations on a text component ==&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;
&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.text.AbstractDocument;&lt;br /&gt;
import javax.swing.text.AttributeSet;&lt;br /&gt;
import javax.swing.text.BadLocationException;&lt;br /&gt;
import javax.swing.text.DocumentFilter;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent textComponent = new JTextField();&lt;br /&gt;
    AbstractDocument doc = (AbstractDocument) textComponent.getDocument();&lt;br /&gt;
    doc.setDocumentFilter(new FixedSizeFilter(10));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class FixedSizeFilter extends DocumentFilter {&lt;br /&gt;
  int maxSize;&lt;br /&gt;
  public FixedSizeFilter(int limit) {&lt;br /&gt;
    maxSize = limit;&lt;br /&gt;
  }&lt;br /&gt;
  public void insertString(DocumentFilter.FilterBypass fb, int offset, String str, AttributeSet attr)&lt;br /&gt;
      throws BadLocationException {&lt;br /&gt;
    replace(fb, offset, 0, str, attr);&lt;br /&gt;
  }&lt;br /&gt;
  public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String str,&lt;br /&gt;
      AttributeSet attrs) throws BadLocationException {&lt;br /&gt;
    int newLength = fb.getDocument().getLength() - length + str.length();&lt;br /&gt;
    if (newLength &amp;lt;= maxSize) {&lt;br /&gt;
      fb.replace(offset, length, str, attrs);&lt;br /&gt;
    } else {&lt;br /&gt;
      throw new BadLocationException(&amp;quot;New characters exceeds max size of document&amp;quot;, offset);&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;
== Get the first 3 characters ==&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.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    JTextComponent tc = new JTextArea(&amp;quot;Initial Text&amp;quot;);&lt;br /&gt;
    int docLength = tc.getDocument().getLength();&lt;br /&gt;
    // Get all text&lt;br /&gt;
    String text = tc.getText();&lt;br /&gt;
    // Get the first 3 characters&lt;br /&gt;
    int offset = 0;&lt;br /&gt;
    int len = 3;&lt;br /&gt;
    text = tc.getText(offset, len);&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;
== Get the last 3 characters ==&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;
&lt;br /&gt;
import javax.swing.JTextArea;&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;
    JTextComponent tc = new JTextArea(&amp;quot;Initial Text&amp;quot;);&lt;br /&gt;
    int docLength = tc.getDocument().getLength();&lt;br /&gt;
    String text = tc.getText();&lt;br /&gt;
    // Get the last 3 characters&lt;br /&gt;
    int offset = docLength - 3;&lt;br /&gt;
    int len = 3;&lt;br /&gt;
    text = tc.getText(offset, len);&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;
== Get value from JTextCompnent and convert it to upper case ==&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.FlowLayout;&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.JTextField;&lt;br /&gt;
import javax.swing.event.CaretEvent;&lt;br /&gt;
import javax.swing.event.CaretListener;&lt;br /&gt;
public class Main implements ActionListener {&lt;br /&gt;
  JTextField jtf = new JTextField(10);&lt;br /&gt;
  JButton jbtnGetTextUpper = new JButton(&amp;quot;Get Text In Uppercase&amp;quot;);&lt;br /&gt;
  Main() {&lt;br /&gt;
    JFrame jfrm = new JFrame(&amp;quot;Demonstrate a Text Field&amp;quot;);&lt;br /&gt;
    jfrm.setLayout(new FlowLayout());&lt;br /&gt;
    jfrm.setSize(240, 140);&lt;br /&gt;
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    jtf.setActionCommand(&amp;quot;TF&amp;quot;);&lt;br /&gt;
    jtf.addActionListener(this);&lt;br /&gt;
    jbtnGetTextUpper.addActionListener(this);&lt;br /&gt;
    jtf.addCaretListener(new CaretListener() {&lt;br /&gt;
      public void caretUpdate(CaretEvent ce) {&lt;br /&gt;
        System.out.println(&amp;quot;Text in real time: &amp;quot; + jtf.getText());&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    jfrm.add(jtf);&lt;br /&gt;
    jfrm.add(jbtnGetTextUpper);&lt;br /&gt;
    jfrm.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent ae) {&lt;br /&gt;
    if (ae.getActionCommand().equals(&amp;quot;TF&amp;quot;)) {&lt;br /&gt;
      System.out.println(&amp;quot;ENTER key pressed: &amp;quot; + jtf.getText());&lt;br /&gt;
    } else {&lt;br /&gt;
      String str = jtf.getText().toUpperCase();&lt;br /&gt;
      System.out.println(&amp;quot;Button pressed: &amp;quot; + str);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    new Main();&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;
== Highlight a word in JTextComponent ==&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.Color;&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.Document;&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;
    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;
      if (hilites[i].getPainter() instanceof MyHighlightPainter) {&lt;br /&gt;
        hilite.removeHighlight(hilites[i]);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    highlight(textComp);&lt;br /&gt;
  }&lt;br /&gt;
  public static void highlight(JTextComponent textComp) {&lt;br /&gt;
    try {&lt;br /&gt;
      Highlighter hilite = textComp.getHighlighter();&lt;br /&gt;
      Document doc = textComp.getDocument();&lt;br /&gt;
      hilite.addHighlight(3, 5, new MyHighlightPainter(Color.red));&lt;br /&gt;
    } catch (BadLocationException e) {&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyHighlightPainter extends DefaultHighlighter.DefaultHighlightPainter {&lt;br /&gt;
  public MyHighlightPainter(Color color) {&lt;br /&gt;
    super(color);&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;
== Limiting the Capacity of a JTextComponent ==&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.JTextField;&lt;br /&gt;
import javax.swing.text.AttributeSet;&lt;br /&gt;
import javax.swing.text.BadLocationException;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
import javax.swing.text.PlainDocument;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent textComp = new JTextField();&lt;br /&gt;
    textComp.setDocument(new FixedSizePlainDocument(10));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class FixedSizePlainDocument extends PlainDocument {&lt;br /&gt;
  int maxSize;&lt;br /&gt;
  public FixedSizePlainDocument(int limit) {&lt;br /&gt;
    maxSize = limit;&lt;br /&gt;
  }&lt;br /&gt;
  public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {&lt;br /&gt;
    if ((getLength() + str.length()) &amp;lt;= maxSize) {&lt;br /&gt;
      super.insertString(offs, str, a);&lt;br /&gt;
    } else {&lt;br /&gt;
      throw new BadLocationException(&amp;quot;Insertion exceeds max size of document&amp;quot;, offs);&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;
== Listening for Caret Movement Events in a JTextComponent ==&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.event.CaretEvent;&lt;br /&gt;
import javax.swing.event.CaretListener;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent textComp = new JTextArea();&lt;br /&gt;
    textComp.addCaretListener(new CaretListener() {&lt;br /&gt;
      public void caretUpdate(CaretEvent e) {&lt;br /&gt;
        int dot = e.getDot();&lt;br /&gt;
        System.out.println(&amp;quot;dot is the caret position:&amp;quot; + dot);&lt;br /&gt;
        int mark = e.getMark();&lt;br /&gt;
        System.out.println(&amp;quot;mark is the non-caret end of the selection: &amp;quot; + mark);&lt;br /&gt;
      }&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;
== Listening for Editing Changes in a JTextComponent ==&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.JTextPane;&lt;br /&gt;
import javax.swing.event.DocumentEvent;&lt;br /&gt;
import javax.swing.event.DocumentListener;&lt;br /&gt;
import javax.swing.text.BadLocationException;&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;
    JTextComponent textcomp = new JTextPane();&lt;br /&gt;
    textcomp.setText(&amp;quot;Initial Text&amp;quot;);&lt;br /&gt;
    textcomp.getDocument().addDocumentListener(new DocumentListener() {&lt;br /&gt;
      public void insertUpdate(DocumentEvent evt) {&lt;br /&gt;
        int off = evt.getOffset();&lt;br /&gt;
        System.out.println(&amp;quot;off:&amp;quot;+off);&lt;br /&gt;
        int len = evt.getLength();&lt;br /&gt;
        System.out.println(&amp;quot;len:&amp;quot;+len);&lt;br /&gt;
        try {&lt;br /&gt;
          String str = evt.getDocument().getText(off, len);&lt;br /&gt;
          System.out.println(str);&lt;br /&gt;
        } catch (BadLocationException e) {&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      public void removeUpdate(DocumentEvent evt) {&lt;br /&gt;
        int off = evt.getOffset();&lt;br /&gt;
        System.out.println(&amp;quot;off:&amp;quot;+off);&lt;br /&gt;
        int len = evt.getLength();&lt;br /&gt;
        System.out.println(&amp;quot;len:&amp;quot;+len);&lt;br /&gt;
      }&lt;br /&gt;
      public void changedUpdate(DocumentEvent evt) {&lt;br /&gt;
        int off = evt.getOffset();&lt;br /&gt;
        System.out.println(&amp;quot;off:&amp;quot;+off);&lt;br /&gt;
        int len = evt.getLength();&lt;br /&gt;
        System.out.println(&amp;quot;len:&amp;quot;+len);&lt;br /&gt;
      }&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;
== Listing the Key Bindings in a JTextComponent Keymap ==&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.event.InputEvent;&lt;br /&gt;
import java.awt.event.KeyEvent;&lt;br /&gt;
import javax.swing.Action;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.KeyStroke;&lt;br /&gt;
import javax.swing.text.Keymap;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    JTextArea component = new JTextArea();&lt;br /&gt;
    Keymap map = component.getKeymap();&lt;br /&gt;
    while (map != null) {&lt;br /&gt;
      KeyStroke[] keys = map.getBoundKeyStrokes();&lt;br /&gt;
      for (int i = 0; i &amp;lt; keys.length; i++) {&lt;br /&gt;
        System.out.println(keys[i].getKeyChar());        &lt;br /&gt;
        Action action = (Action) map.getAction(keys[i]);&lt;br /&gt;
        System.out.println(action);&lt;br /&gt;
      }&lt;br /&gt;
      Action defAction = map.getDefaultAction();&lt;br /&gt;
      System.out.println(defAction);&lt;br /&gt;
      map = map.getResolveParent();&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;
== Modifying Text in a JTextComponent: Append some text ==&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;
&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.text.Document;&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;
    JTextComponent textComp = new JTextField(&amp;quot;Initial Text&amp;quot;);&lt;br /&gt;
    Document doc = textComp.getDocument();&lt;br /&gt;
    // Append some text&lt;br /&gt;
    doc.insertString(doc.getLength(), &amp;quot;some text&amp;quot;, null);&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;
== Modifying Text in a JTextComponent: Delete the first 5 characters ==&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.JTextField;&lt;br /&gt;
import javax.swing.text.Document;&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;
    JTextComponent textComp = new JTextField(&amp;quot;Initial Text&amp;quot;);&lt;br /&gt;
    Document doc = textComp.getDocument();&lt;br /&gt;
    // Delete the first 5 characters&lt;br /&gt;
    int pos = 0;&lt;br /&gt;
    int len = 5;&lt;br /&gt;
    doc.remove(pos, len);&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;
== Modifying Text in a JTextComponent: Insert some text after the 5th character ==&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.JTextField;&lt;br /&gt;
import javax.swing.text.Document;&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;
    JTextComponent textComp = new JTextField(&amp;quot;Initial Text&amp;quot;);&lt;br /&gt;
    Document doc = textComp.getDocument();&lt;br /&gt;
    // Insert some text after the 5th character&lt;br /&gt;
    int pos = 5;&lt;br /&gt;
    doc.insertString(pos, &amp;quot;some text&amp;quot;, null);&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;
== Modifying Text in a JTextComponent: Insert some text at the beginning ==&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.JTextField;&lt;br /&gt;
import javax.swing.text.Document;&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;
    JTextComponent textComp = new JTextField(&amp;quot;Initial Text&amp;quot;);&lt;br /&gt;
    Document doc = textComp.getDocument();&lt;br /&gt;
    // Insert some text at the beginning&lt;br /&gt;
    int pos = 0;&lt;br /&gt;
    doc.insertString(pos, &amp;quot;some text&amp;quot;, null);&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;
== Modifying Text in a JTextComponent: Replace the first 3 characters with some text ==&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;
&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.text.Document;&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;
    JTextComponent textComp = new JTextField(&amp;quot;Initial Text&amp;quot;);&lt;br /&gt;
    Document doc = textComp.getDocument();&lt;br /&gt;
    // Replace the first 3 characters with some text&lt;br /&gt;
    int pos = 0;&lt;br /&gt;
    int len = 3;&lt;br /&gt;
    doc.remove(pos, len);&lt;br /&gt;
    doc.insertString(pos, &amp;quot;new text&amp;quot;, null);&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;
== Moving the Caret of a JTextComponent ==&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.Color;&lt;br /&gt;
import javax.swing.JTextArea;&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;
    JTextComponent c = new JTextArea();&lt;br /&gt;
    c.getCaretPosition();&lt;br /&gt;
    if (c.getCaretPosition() &amp;lt; c.getDocument().getLength()) {&lt;br /&gt;
      char ch = c.getText(c.getCaretPosition(), 1).charAt(0);&lt;br /&gt;
    }&lt;br /&gt;
    // Move the caret&lt;br /&gt;
    int newPosition = 0;&lt;br /&gt;
    c.moveCaretPosition(newPosition);&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;
== Overriding a Few Default Typed Key Bindings in a JTextComponent ==&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.event.ActionEvent;&lt;br /&gt;
import javax.swing.AbstractAction;&lt;br /&gt;
import javax.swing.Action;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.KeyStroke;&lt;br /&gt;
import javax.swing.text.BadLocationException;&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;
    JTextField component = new JTextField(10);&lt;br /&gt;
    // Override letter a&lt;br /&gt;
    component.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(&amp;quot;typed a&amp;quot;),&amp;quot;actionName&amp;quot;);&lt;br /&gt;
    component.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(new Character(&amp;quot; &amp;quot;), 0), &amp;quot;actionName&amp;quot;);&lt;br /&gt;
    component.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(&amp;quot;typed X&amp;quot;), &amp;quot;none&amp;quot;);&lt;br /&gt;
    component.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(&amp;quot;shift pressed SPACE&amp;quot;), &amp;quot;actionName&amp;quot;);&lt;br /&gt;
    component.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(new Character(&amp;quot; &amp;quot;), 0), &amp;quot;none&amp;quot;);&lt;br /&gt;
    MyAction action  = new MyAction();&lt;br /&gt;
    &lt;br /&gt;
    component.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(&amp;quot;pressed SPACE&amp;quot;),action.getValue(Action.NAME));&lt;br /&gt;
    component.getActionMap().put(action.getValue(Action.NAME), action);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyAction extends AbstractAction{&lt;br /&gt;
  public MyAction(){&lt;br /&gt;
    super(&amp;quot;Insert Space&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent evt) {&lt;br /&gt;
    JTextComponent c = (JTextComponent) evt.getSource();&lt;br /&gt;
    try {&lt;br /&gt;
      c.getDocument().insertString(c.getCaretPosition(), &amp;quot; &amp;quot;, null);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      e.printStackTrace();&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;
== Remove Highlighting in a JTextComponent ==&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.Color;&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.Document;&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;
      if (hilites[i].getPainter() instanceof MyHighlightPainter) {&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;
    &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;
== Replace selected text ==&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.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent c = new JTextArea();&lt;br /&gt;
    c.replaceSelection(&amp;quot;replacement text&amp;quot;);&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;
== Set the color behind the selected text ==&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.Color;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent c = new JTextArea();&lt;br /&gt;
    c.setSelectionColor(Color.green);&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;
== Set the color of text inside the selection ==&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.Color;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent c = new JTextArea();&lt;br /&gt;
    c.setSelectedTextColor(Color.red);&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;
== Setting the Blink Rate of a JTextComponent&amp;quot;s Caret ==&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.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent c = new JTextArea();&lt;br /&gt;
    // Set rate to blink once a second&lt;br /&gt;
    c.getCaret().setBlinkRate(1000);&lt;br /&gt;
    // Set the caret to stop blinking&lt;br /&gt;
    c.getCaret().setBlinkRate(0);&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;
== Sharing a Document Between JTextComponents ==&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.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent textComp1 = new JTextArea();&lt;br /&gt;
    JTextComponent textComp2 = new JTextArea();&lt;br /&gt;
    textComp2.setDocument(textComp1.getDocument());&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;
== Using a Position in a JTextComponent ==&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.Document;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
import javax.swing.text.Position;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception{&lt;br /&gt;
    JTextComponent textComp = new JTextArea();&lt;br /&gt;
    Document doc = textComp.getDocument();&lt;br /&gt;
    Position p = null;&lt;br /&gt;
    int location = 3;&lt;br /&gt;
    p = doc.createPosition(location);&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;
== Using the Selection of a JTextComponent ==&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.JTextComponent;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    JTextComponent c = new JTextArea();&lt;br /&gt;
    // Get text inside selection&lt;br /&gt;
    c.getSelectedText();&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>
			</entry>

	</feed>