SimpleIntegerProperty из TextField - PullRequest
       21

SimpleIntegerProperty из TextField

0 голосов
/ 21 апреля 2019

Мне нужно вычислить сумму нескольких полей ввода текста.Скорее прямо, но я боролся с правильным преобразованием и приведением в течение нескольких часов.

У меня есть несколько текстовых полей, и мне нужно связать их свойства текста с SimpleIntegerProperties, или, по крайней мере, я думаю, чтобынаконец вычислите их сумму.Вот что я застрял с последним:

IntegerProperty value = new SimpleIntegerProperty();
NumberStringConverter converter = new NumberStringConverter();
TextField textField = new TextField();
textField.textProperty().addListener(
    new ChangeListener<String>() {
    @Override
    public void changed(
        ObservableValue<? extends String> observable,
        String oldValue, String newValue) {
        if (!newValue.matches("[1-9]\\d{0,3}")) {
            textField.setText(oldValue);
            }}});
value.bindBidirectional(textField.textProperty(), converter);

Я видел решения, использующие конвертер в качестве аргумента для двунаправленного связывания, но он дает мне ошибку, говоря, что это один аргумент, слишком много.Я также попробовал value.bindBidirectional(converter.fromString(textField.textProperty().get()));, который тоже не работает.На этот раз, сказав, что номер не может быть преобразован в номер объекта.

Это домашний вопрос, но ни изучение предоставленных материалов, ни документации не дало мне дальнейших результатов за последние 3 часа, отсюда и пост.Нам необходимо использовать textFields, двунаправленную привязку, simpleIntegerProperties и NumberStringConverter.

1 Ответ

1 голос
/ 22 апреля 2019

Так что, очевидно, это value.bindBidirectional(textField.textProperty(), converter); не работает.Это, однако, делает: textField.textProperty().bindBidirectional(value, converter);

...