2016-12-19 5 views
1

Ich möchte eine Validierung in JavaFx mit ControlsFX durchführen. mein Code wie folgt aus:ControlsFX: Validierungsergebnis

ValidationSupport support = new ValidationSupport(); 
boolean isValid = true; 
if(textField.getText().trim().isEmpty()) isValid = false; 
support.registerValidator(testField, Validator.createEmptyValidator("This field is required!")); 

Meine Frage ist, ob es möglich ist, die if Bedingung zu verzichten und extrahieren, ob die textField von der Validierungsunterstützung

Antwort

5

Ihre isValid Variable und die if Anweisung leer ist aren tu wirklich nichts. Die ValidationSupport enthält eine beobachtbare invalid property, mit dem Sie können Zuhörer registrieren:

support.invalidProperty().addListener((obs, wasInvalid, isNowInvalid) -> { 
    if (isNowInvalid) { 
     System.out.println("Invalid"); 
    } else { 
     System.out.println("Valid"); 
    } 
}); 

oder (vielleicht bequemer) registrieren Bindungen:

Button okButton = new Button("OK"); 
okButton.disableProperty().bind(support.invalidProperty()); 

Dieser letzte Code-Schnipsel die okButton gewährleisten nur, wenn der Text aktiviert ist Feld ist nicht leer.

+0

Wie man dies anwendet, wenn ich viele TextFields validieren muss (meine if-Bedingung wurde gemacht, damit ich verhindern konnte, dass ein Dialogfenster geschlossen wird) –

+0

Einfach einen Validator mit 'support' für jedes der Textfelder registrieren. –

Verwandte Themen