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 isconcentrated in a common superclass that multiple subclasses inherit. In this case, the TextComponent class contains a setCaretPositionmethod 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 anabsolute 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); }}