我在JavaFX中创建了一个向导窗格,用户可以通过窗格底部的按钮浏览向导。窗格的实际内容(在下图中用红色方框标记)由单独的FXML文件表示,该文件在初始化时作为子窗口导入到向导窗格中。
对于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的原因是什么吗?非常感谢任何帮助!