Понимание валидации JavaFX - PullRequest
       44

Понимание валидации JavaFX

0 голосов
/ 09 февраля 2020

Я нашел этот код в Интернете, который запрещает пользователю вводить что-либо, кроме числа в TextField. Я хочу использовать это в своем коде для домашней работы, но я не понимаю, что происходит. Кто-нибудь может помочь мне понять, ПОЧЕМУ это работает? Спасибо.

valueTextField.textProperty().addListener(new ChangeListener<String>() {
       @Override
       public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
            if (!newValue.matches("\\d{0,9}([\\.]\\d{0,9})?")) {
                valueTextField.setText(oldValue);
            }
        }
});

1 Ответ

0 голосов
/ 11 февраля 2020

это может быть подход грубой силы без использования регулярных выражений. он просто пытается привести данные как целевое значение. в случае неудачи будет установлено старое значение (в соответствии с вашим подходом).

alpha.textProperty().addListener(new ChangeListener<String>() {
            @Override
            public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                Double dou = 0.0;
                boolean valid = false;
                try {
                    dou = Double.parseDouble(newValue);
                    if (dou >= 0 && dou <= 1) { // some conditions if you need a specific range
                        valid = true;
                    }

                } catch(Exception e) {}
                if (valid) {
                    alphaInput = dou;
                    Qnet.setAlpha(dou);
                    alpha.setText(dou.toString());
                } else {
                    alpha.setText(oldValue);
                }
            }
        });
...