禁用controlsFX WizardPane 中的“下一步”按钮?

0 binding dialog javafx wizard controlsfx

在我的 JavaFX 项目中,我包含了一个使用Linear.Flow. 对于我的 WizardPane 之一,我希望将Next按钮的禁用属性绑定到布尔属性。(更具体地说,如果文本字段为空,则应禁用该按钮)。

但是,我无法找到任何解决方案。(此处提供的可能解决方案对我不起作用)。

这是我的向导窗格:

private WizardPane getName() {
    TextField textField = new TextField();
    textField.requestFocus();

    final WizardPane namePane = new WizardPane();

    namePane.setHeaderText("Choose Name for File");

    final GridPane grid = new GridPane();

    grid.add(new Label("File Name:"), 0, 0);
    grid.add(textField, 1, 0);

    namePane.setContent(grid);

    return namePane;
}
Run Code Online (Sandbox Code Playgroud)

我绑定disabled属性的失败尝试如下:

@Override
public void onEnteringPage(Wizard wizard) {
    this.getButtonTypes()
                .stream()
                .filter(type -> type.getButtonData().equals(ButtonBar.ButtonData.NEXT_FORWARD))
                .map(this::lookupButton)
                .findFirst()
                .ifPresent(next -> next.disableProperty().bind(textField.textProperty().isEmpty()));
}
Run Code Online (Sandbox Code Playgroud)

任何建议都非常感激。谢谢!

小智 5

事实证明我真的把它复杂化了。解决方案很简单,绑定 Wizard 的invalidProperty

Wizard wiz = new Wizard();
wiz.invalidProperty().bind(textField.textProperty().isEmpty());
Run Code Online (Sandbox Code Playgroud)