Textfeld für die Eingabe von Zahlen
Das Beispiel zeigt eine Klasse, in deren Methode init()
die Deklaration und entsprechende Einrichtung eines
Textfeldes für Zahleneingaben stattfinden. Das
Textfeld selbst muss vom Typ JFormattedTextField
sein. Die Klasse unterstützt die Darstellung
formatierter Inhalte. So gibt es z.B. u.a. die
Möglichkeit, Datums- und Währungswerte sogar
lokalisiert anzuzeigen.
Die Formatierung selbst
erfolgt in zwei Schritten.
- Zunächst wird ein Objekt vom Typ
NumberFormat
erzeugt. Es erfasst die Eigenschaften des Formates selbst. Seine MethodesetGroupingUsed()
bewirkt über den Parameterfalse
, dass der Tausender-Trenner nicht angezeigt wird. - Im zweiten Schritt wird ein
NumberFormatter
erstellt, dessen Konstruktor das Format-Objekt übergeben wird. Die vonDefaultFormatter
geerbte MethodesetAllowsInvalid()
regelt, ob die Eingabe eines der Formatierung nicht entsprechenden Wertes erlaubt ist oder nicht. Durch Übergabe vonfalse
wird dies verhindert. Vorzeichen werden jedoch akzeptiert.
Das Formatter-Objekt wird schließlich beim Erzeugen des Textfeldes dem Konstruktor übergeben, das Textfeld dem JFrame hinzugefügt und dieser sichtbar gesetzt.
import java.text.NumberFormat;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.text.NumberFormatter;
public class NumberTextFieldExample {
public NumberTextFieldExample(){
init();
}
private void init() {
NumberFormat format = NumberFormat.getInstance();
format.setGroupingUsed(false);
NumberFormatter formatter = new NumberFormatter(format);
formatter.setAllowsInvalid(false);
JFormattedTextField field = new JFormattedTextField(formatter);
JFrame frame = new JFrame("Zahlen-Textfeld");
frame.add(field);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new NumberTextFieldExample());
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.