来自TextField的SimpleIntegerProperty

时间:2019-04-20 21:14:26

标签: java javafx properties binding

我需要计算几个文本输入字段的总和。挺直截了当的,但是我已经为正确的转换和投放而苦苦挣扎了几个小时。

我有许多文本字段,需要将它们的文本属性绑定到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 个答案:

答案 0 :(得分:1)

因此,显然value.bindBidirectional(textField.textProperty(), converter);不起作用。但是,这样做是:textField.textProperty().bindBidirectional(value, converter);