dcsimg
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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


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

WEBINAR:

On-Demand

Building the Right Environment to Support AI, Machine Learning and Deep Learning


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