Wie lässt sich Text in einer Text-Komponente vorauswählen?

Mit den Methoden JTextComponent#setSelectionStart(int index) und JTextComponent#setSelectionEnd(int index) lässt sich der Text in allen von JTextComponent abgeleiteten Textkomponenten, wie JTextArea oder JTextField, vorauswählen.

Im Beispiel wird einem einfachen JFrame eine JTextArea hinzugefügt. Sie wird mit dem Text 'Text hier einfügen' vorbelegt. Die Methoden setSelectionStart() und setSelectionEnd() sorgen für die Vorauswahl. Hierzu wird beiden Methoden jeweils ein Index für den Beginn bzw. das Ende der Selektion übergeben. Der Start-Index wird direkt durch die Methode indexOf() geliefert. Sie gibt die Textposition des ersten Vorkommens des übergebenen Strings (hier 'hier') zurück.
Zur Ermittlung der Schlussposition wird diesem Index lediglich die Länge des zu selektierenden Textabschnitts hinzugerechnet.

import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JTextArea;

public class Vorauswahl extends JFrame {

    public Vorauswahl() {
    initGUI();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setTitle("Vorauswahl");
    this.setSize(600, 400);
    this.setLocationRelativeTo(null);
    this.setVisible(true);
    }

    private void initGUI() {
    String txt = "Text hier einf\u00FCgen";
    JTextArea area = new JTextArea(txt);
    area.setSelectionStart(txt.indexOf("hier"));
    area.setSelectionEnd(txt.indexOf("hier") + "hier".length());
    area.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent me) {
        area.setSelectionStart(0);
        area.setSelectionEnd(area.getText().length());
        }
    });
    this.add(area, BorderLayout.CENTER);
    }

    public static void main(String[] args) {
    new Vorauswahl();
    }
}

Aus vielen Eingabefeldern kennt man das Verhalten, dass der vorbelegte Text beim Einfügen des Cursors automatisch ausgewählt wird, sodass er sofort überschrieben werden kann.
Das Verhalten lässt sich erreichen, wenn das oben geschilderte Verfahren durch einen MouseListener angestoßen wird. Das Beispiel zeigt dies mit einem MouseAdapter, der es ermöglicht, lediglich die tatsächlich benötigten Methoden eines MouseListeners zu implementieren. Er wird hier als anonyme Klasse verwendet.