JavaFX in TextField nur int Werte?

4 Antworten

Wenn erst bei einem Button geprüft werden soll, dann kannst du einfach ein Pattern verwenden. (In diesem Fall vorkompilieren, das ist schneller)

Man kann aber auch die Eingabe auf nur Zahlen begrenzen, einfach einen ChangeListener zu der Text Property des Textfields hinzufügen, falls die Eingabe nicht nur Zahlen enthält, einfach wieder den vorherigen Wert setzen.

Zur Validierung ist die Antwort von Enarus sehr gut.

Was die Fehlerausgabe betrifft, verwende hier die Klasse: Alert.

Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Fehler...");
alert.setHeaderText("Eingabevalidierung");
alert.setContentText("Der enthaltene Text enthält keine Zahlen!");

alert.showAndWait();

(Verfügbar ab: Java8, Update 40)

Ich würde einfach gucken, ob sich die Zahl verarbeiten lässt:

    int testzahl = 0; // int-Variable erzeugen
try
{
testzahl = Integer.parseInt("bla"); // versuchen, der int-Variable einen Text zuzuweisen
System.out.println(testzahl); // diese Zeile wird gar nicht ausgeführt, weil ein Fehler auftritt
}
catch (NumberFormatException e)
{
System.out.println("Bitte nur Zahlen eingeben"); // Hier kannst du halt sagen, was passiert, wenn die Zahl sich nicht verarbeiten lässt
}

Statt dem "bla" muss natürlich der Inhalt des Textfeldes rein.

Hey du kannst folgendes nutzen:

lbAusgabe.matches("[0-9]*")

gibt dir einen Boolean zurück, kannst dir also entweder noch selber eine validator Methode schreiben die bspw so aussehen könnte:

private boolean validate(String eingabe){
   return eingabe.matches("[0-9]*"); 
}

oder eben direkt in einer if-Abfrage prüfen. Hoffe das hilft.