Witam,

podczas walidacji pól formularza rejestracyjnego napotkałem pewien problem. Otóż w momencie kiedy wprowadzona wartość w danym textField'zie nie pasuje do zdefiniowanego regex'a to w danym polu ustawia się styl css błędu.

Poniżej metoda walidująca.

 public void validationKeyReleased(TextField txt, String pattern, String error) {

        txt.setOnKeyReleased(event -> {

            if (txt.isPressed() == false) {

                Pattern p = Pattern.compile(pattern);
                Matcher m = p.matcher(txt.getText());

                if (m.find()) {
                    errorOut.setText("");
                    txt.getStyleClass().remove("errorOut");
                    btnRegister.setDisable(false);               
                } else {
                    btnRegister.setDisable(true);
                    txt.getStyleClass().add("errorOut");
                    errorOut.setText(error);
                }

            }
        });
    }

I przykładowa implementacja dla pola imię

 private void validateImie() {

        validationKeyReleased(txtImie, "^[a-zA-Z]{3,}$", "Podane imię jest nieprawidłowe");
    }

Wszystko działa dobrze, jeśli pole nie spełnia warunków regex'a. Jeśli wartość jest prawidłowa to styl się nie zmienia na domyślny, a dopiero kiedy wpisze 4 znak, czyli o jeden znak więcej niż powinno się to stać. Dodam, ze kod errorOut.setText(""), który jest w tym samym warunku wykonuje się prawidłowo.

Czy ktoś mógłby mi powiedzieć gdzie leży problem ? dlaczego nie wykonuje się ten fragment kodu po wprowadzeniu poprawnych wartości ?