Wie vermeidet man doppelten Code bei der Validierung mehrerer Eingabefelder wie TextField
s, DatePicker
s, ChoiceBox
es? Dieser Code gehört zu der Serviceklasse, die von StageAddController
verwendet wird, um die Eingabe zu überwachen und zu validieren. Wenn der Fokus verloren geht und das Feld leer ist, wird die Feldgrenze rot.Wie vermeidet man doppelten Code bei der Validierung mehrerer Eingabefelder?
public void validateForEmptyTextField(TextField textField, PseudoClass errorClass){
textField.focusedProperty().addListener((arg0, oldValue, newValue) -> {
if (!newValue) { //when focus lost
if(textField.getText().trim().isEmpty()){
textField.pseudoClassStateChanged(errorClass, true);
}
else
textField.pseudoClassStateChanged(errorClass, false);
}
});
}
public void validateForEmptyDatePicker (DatePicker datePicker, PseudoClass errorClass){
datePicker.focusedProperty().addListener((arg0, oldValue, newValue) -> {
if (!newValue) { //when focus lost
if(datePicker.getValue() == null){
datePicker.pseudoClassStateChanged(errorClass, true);
}
else
datePicker.pseudoClassStateChanged(errorClass, false);
}
});
}
public void validateForEmptyChoiceBox (ChoiceBox<String > stringChoiceBox, PseudoClass errorClass){
stringChoiceBox.focusedProperty().addListener((arg0, oldValue, newValue) -> {
if (!newValue) { //when focus lost
if(stringChoiceBox.getValue() == null){
stringChoiceBox.pseudoClassStateChanged(errorClass, true);
}
else
stringChoiceBox.pseudoClassStateChanged(errorClass, false);
}
});
}