~Java4Beginners~
~Java4Beginners~

JTextField

Um Daten in unserer GUI eingeben zu können, werden oft JTextField-Objekte verwendet. Beim Auslesen der Daten aus einem JTextField gilt es zu beachten, dass der Inhalt eines JTextFields immer vom Datentyp String ist.

Notwendiger Import


import javax.swing.JTextField;

Beispielprogramm

Im folgenden Beispielprogramm werden verschiedene JTExtField's mit verschiedenen Konstruktoren erstellt, damit die Auswirkung der verschiedenen Konstruktoren ersichtlich ist.

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * Beispiel JTextField
 * @author Markus Badzura
 */
public class Bedien_JTextfield extends JFrame
{
    public static void main(String[] args) 
    {
        Bedien_JTextfield tf = new Bedien_JTextfield();
        tf.Bedien_JTextfield();
    }
    
    public void Bedien_JTextfield()
    {
        this.setSize(300,300);
        this.setTitle("Beispiel JTextField");   
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        panel.setSize(this.getSize());
        JTextField tf1 = new JTextField();
        JTextField tf2 = new JTextField("Textfeld");
        JTextField tf3 = new JTextField(10);
        JTextField tf4 = new JTextField("Textfeld",10);
        panel.add(tf1);
        panel.add(tf2);
        panel.add(tf3);
        panel.add(tf4);
        this.add(panel);
        this.setVisible(true);
    }
}
Nach Ausführung erhalten wir folgende Ansicht.

Konstruktoren

Konstruktor Beschreibung
JTextField() Erzeugt ein leeres Textfeld mit einer Spaltengröße von 0
JTextField(int-Wert) Erzeugt ein leeres Textfeld mit einer Spaltengröße, welche dem eingegebenen int-Wert entspricht.
JTextField(String) Erzeugt ein Textfeld, in welchem bereits der übergebene String eingetragen ist. Die Länge des Textfeldes wird automatisch an die String-Länge angepasst.
JTextField(String, int-Wert) Erzeugt ein Textfeld, in welchem bereits der übergebene String eingetragen ist. Die Länge des Textfeldes wird mit dem übergebenen int-Wert angegeben.

Formatierungsmöglichkeiten

Es stehen eine Vielzahl von Möglichkeiten zur Verfügung, um die Textfelder zu formatieren. Hier eine kleine Auswahl.

        tf1.setColumns(15);
        tf2.setForeground(Color.RED);
        tf3.setBackground(Color.GREEN);
        tf4.setSize(150,40);

Wenn wir mit dem Layout(null) arbeiten, steht uns zur Positionierung die Methode setSize() oder setBounds() zur Verfügung. Die Verwendung dieser Methode erfolgt identisch mit der Verwendung der Methoden vom JLabel.

JTextField auslesen

Wie bereits erwähnt, handelt es sich beim Inhalt von einem Textfeld um einen String, d. h. wenn wir einen Zahlenwert erwarten (z. B. Alter), dann müssen wir den Inhalt des Textfeldes in den gewünschten Datentyp parsen.

        int alter = Integer.parseInt(tf3.getText());
Mit getText() lesen wir das Textfeld aus.

Weitere Methoden bei der Arbeit mit JTextField

Methode Beschreibung
bezeichner.requestFocus(); Das angegebene Textfeld wird fokussiert
bezeichner.selectAll(); Der Inhalt des Textfeldes wird markiert.
bezeichner.getText().trim(); Mit dieser Methodenkette erhalten Sie die Text des Textfeldes (getText()) ohne führende oder schließende Leerzeichen (trim()).
bezeichner.setText("Zeichenkette"); Die Zeichenkette wird als Text in das angegebene Textfeld gesetzt.
bezeichner.setHorizontalAlignment(int Ausrichtung); Hiermit legen wir die Ausrichtung des Textes fest. Verfügbare Konstanten hierfür sind:
  • JTextField.LEFT
  • JTextField.CENTER
  • JTextField.RIGHT
  • JTextField.LEADING
  • JTextField.TRAILING

Editabel und Enabled

Mit diesen beiden Methoden haben wir die Möglichkeit, Benutzereingaben im Textfeld zu unterbinden. Allerdings besteht zwischen den beiden Attributen ein kleiner Unterschied.
setEnablede(false) sorgt dafür, dass das JTextField gesperrt ist, d. h. es sind (ausser das Scrollen bei zu langem Text) keine anderen Interaktionen, wie z. B. markieren und kopieren, möglich.
setEditable(false) sorgt dafür, dass keine Änderungen im JTextField vorgenommen werden können. Interaktionen, wie z. B. markieren und kopieren, sind möglich.
Ebenso ist ein grafischer Untersschied erkennbar, wie in folgendem Auszug ersichtlich.

        tf_idVorname = new JTextField();
        tf_idVorname.setFont(tf_idVorname.getFont().deriveFont(sg));
        tf_idVorname.setBounds(tf_x,70,breite,hoehe);
        tf_idVorname.setEditable(false);
        tf_idNachname = new JTextField();
        tf_idNachname.setFont(tf_idNachname.getFont().deriveFont(sg));
        tf_idNachname.setBounds(tf_x,100,breite,hoehe);
        tf_idNachname.setEnabled(false);
In diesem Code-Auszug können Sie ersehen, dass das JTextField tf_idVorname mit setEditable(false) und tf_idNachname.setEnabled(false) gesetzt wurden. In folgendem Screenshot ist ersichtlich, welche grafische Auswirkung diese Einstellungen haben.

nach oben Java4Beginners -- Seitenversion 1.03 -- Stand: 2017-07-11