根据child中的BooleanProperty禁用父级中的向导窗格按钮

时间:2015-03-19 21:43:55

标签: javafx

我在JavaFX中创建了一个向导窗格,用户可以通过窗格底部的按钮浏览向导。窗格的实际内容(在下图中用红色方框标记)由单独的FXML文件表示,该文件在初始化时作为子窗口导入到向导窗格中。

Wizard

对于Child Controller,我添加了一个BooleanProperty,如果向导的该步骤中的所有字段都已填写并且正确,那么这将是我在父控制器中的检查。因此,在子控制器中更改此BooleanProperty。 父控制器中的ChangeListener检查BooleanProperty的值。但是,每次用户移动到向导中的另一个步骤时,我都必须添加和删除此ChangeListener。当我尝试将ChangeListener添加到第一步的子控制器时,我得到一个NullPointerException,这对我没有意义。 ChangeListener的代码如下:

ChangeListener<Boolean> booleanPropertyListener = new ChangeListener<Boolean>(){
    @Override
    public void changed(ObservableValue<? extends Boolean> observable,
                        Boolean oldValue, Boolean newValue) {

        nextButton.setDisable(!newValue.booleanValue());
    }};

将ChangeListener添加到第一步:

stepOneController.isValidated.addListener(booleanPropertyListener);

有人知道导致NullPointerException的原因是什么吗?非常感谢任何帮助!

0 个答案:

没有答案