Literatur

JTextField

Mit der Klasse JTextField fügt man der grafischen Benutzeroberfläche ein einfaches Eingabefeld für eine einzelne Textzeile hinzu. Textfelder finden beispielsweise häufig bei der Erstellung von Eingabemasken zur Erfassung von Daten Verwendung (z.B. Kundendaten).

Neben dem Standardkonstruktor besitzt die Klasse JTextField vier weitere Konstruktoren, die wir in folgender Tabelle kurz näher erläutern wollen:

Konstruktor Kurzbeschreibung
JTextField(int columns) Dieser Konstruktor erstellt ein JTextField mit der angegebenen Anzahl an Spalten.
JTextField(String text) Erstellt ein JTextField, das bereits den im Konstruktor übergebenen Text enthält.
JTextField(String text, int columns) Mit diesem Konstruktor erhält das Textfeld direkt einen Text und die Spaltenanzahl.
JTextField(Document doc, String text, int columns) Hier wird zusätzlich zu den Parametern des oberen Konstruktors (Text und Spaltenanzahl) noch eine Instanz der Dokumentenklasse Document übergeben.

Anschließend ein einfaches Beispiel, wie man ein Textfeld in Java erstellt:

import java.awt.Color;
import javax.swing.*;
 
public class JTextFieldBeispiel {
    public static void main(String[] args) {
        JFrame meinJFrame = new JFrame();
        meinJFrame.setTitle("JTextFieldBeispiel");
        meinJFrame.setSize(300, 150);
        JPanel panel = new JPanel();
 
        JLabel label = new JLabel("Ihr Name");
        panel.add(label);
 
        // Textfeld wird erstellt
        // Text und Spaltenanzahl werden dabei direkt gesetzt
        JTextField tfName = new JTextField("Paul Programmierer", 15);
        // Schriftfarbe wird gesetzt
        tfName.setForeground(Color.BLUE);
        // Hintergrundfarbe wird gesetzt
        tfName.setBackground(Color.YELLOW);
        // Textfeld wird unserem Panel hinzugefügt
        panel.add(tfName);
 
        JButton buttonOK = new JButton("OK");
        panel.add(buttonOK);
 
        meinJFrame.add(panel);
        meinJFrame.setVisible(true);
 
    }
}

Wir haben jetzt  unser Textfeld mit dem dritten Konstruktor der obigen Tabelle erzeugt. Text und Spaltenanzahl wurden also bereits über den Konstruktor gesetzt. Anschließend setzen wir die Schriftfarbe mit setForeground auf blau und die Hintergrundfarbe mit setBackground auf gelb.

Folgende Oberfläche sollten Sie dann nach Ausführung des Codes sehen:

Beispiel für ein JTextField

 

JTextField erbt als Kindklasse von der Klasse JTextComponent deren Methoden. Zu nennen sind hier besonders die Methoden getText() und setText(String str), mit denen man den im Textfeld angezeigten Text auslesen bzw. setzen kann. Mit der Methode setEditable(boolean b) kann angegeben werden, ob das Textfeld bearbeitet werden kann (true) oder nicht (false). Über getEditable() kann abgefragt werden, ob das JTextField editierbar ist. Standardmäßig ist ein Textfeld editierbar.

Die Klasse JTextField verfügt aber auch über weitere eigene Methoden, von denen wir hier einige näher erläutern möchten:

Methodenname Kurzbeschreibung
void addActionListener (ActionListener l) Fügt einen ActionListener hinzu, um auf ActionEvents reagieren zu können.
Action getAction()    Gibt die aktuell gesetzte Action-Instanz zurück. Falls keine gesetzt wurde, ist der Rückgabewert null.
ActionListener [ ] getActionListeners() Gibt alle ActionListener, die diesem JTextField hinzugefügt wurden, in einem Array zurück.
int getColumns() Gibt die gesetzte Spaltenanzahl zurück.
int getHorizontalAlignment() Gibt die horizontale Ausrichtung des Textes zurück.
Dimension getPrefferedSize() Gibt die bevorzugte Größe für das Textfeld zurück.
void removeActionListener (ActionListener l) Entfernt den angegebenen ActionListener.
void setAction(Action a)    Setzt die Action-Instanz für das JTextField und überträgt die in der Action gesetzten Properties auf das Textfeld.
void setColumns (int columns) Setzt die Anzahl der Spalten.
void setDocument (Document doc) Setzt den Dokumententyp.
void setFont (Font f) Gibt die Schriftart vor.
void setHorizontalAlignment (int alignment) Setzt die horizontale Ausrichtung.

Das Textfeld ist standardmäßig nicht für eine begrenzte Anzahl an Zeichen gedacht. Man kann diese jedoch über Dokumentenklassen, die das Interface Document implementieren, begrenzen. Mit eigenen Dokumentenklassen ist es außerdem möglich, dem Text eine Formatierung vorzugeben. Für bestimmte Dokumententypen gibt es bereits vorgefertigte Klassen (z.B. HTMLDocument).