Wie lässt sich Text in einer Text-Komponente vorauswählen?
Im Beispiel wird einem 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;
import javax.swing.SwingUtilities;
public class Vorauswahl {
public Vorauswahl() {
initGUI();
}
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());
}
});
JFrame frame = new JFrame("Vorauswahl");
frame.setSize(300, 200);
frame.add(area, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> 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.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.