Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: AWT
Expertise: Beginner
Nov 20, 1998

Controlling the cursor position in a TextField

Question:
Is there a way to put the text editing cursor in a specific position, like at the end of the string, in a TextField?

Answer:
This is the sort of question people ask because they look at the javadocs for TextField, but don't see a cursor placement method and give up. Whenever you look at the documentation for a class, you have to remember to look at the documentation for its parent classes also. More often than not, more general functionality is concentrated in a common superclass that multiple subclasses inherit. In this case, the TextComponent class contains a setCaretPosition method that is inherited by both TextField and TextArea. Java is object-oriented after all! Unfortunately, you will find that setCaretPosition is not entirely useful for TextAreas, where you would prefer to set the position based on a row and column, and not an absolute index. The following short example creates a TextField displaying a test string, and places the editing cursor in the middle of the string.

import java.awt.*;
import java.awt.event.*;

public final class TextFieldCursor {
  public static void main(String[] args) {
    Frame frame;
    TextField textField;
    WindowListener exitListener;

    exitListener = new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
	Window window = e.getWindow();
	window.setVisible(false);
	window.dispose();
	System.exit(0);
      }
    };

    textField = new TextField("01234567890123456789", 20);

    frame = new Frame();

    frame.add(textField);
    frame.addWindowListener(exitListener);
    frame.pack();

    // Set the caret position to 
       the middle of the string
    // (after the first 9).
       You can only do this after the
    // TextField's peer has been created,
       so you have to do
    // it after packing the frame.
    textField.setCaretPosition(10);

    frame.setVisible(true);
  }
}
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date