Отключить кнопку «Далее» в ControlFX WizardPane? - PullRequest
0 голосов
/ 17 марта 2019

В моем проекте JavaFX я включаю мастер controlFX, используя Linear.Flow. Для одного из моих WizardPane я бы хотел, чтобы свойство disabled кнопки Next было привязано к логическому свойству. (В частности, если TextField пуст, кнопка должна быть отключена).

Однако я не могу найти какое-либо решение, которое делает это. (Возможные решения здесь у меня не работают).

Вот моя WizardPane:

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;
}

Моя неудачная попытка связать свойство disablede выглядит следующим образом:

@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()));
}

Любые предложения высоко ценится. Спасибо!

1 Ответ

1 голос
/ 17 марта 2019

Оказывается, я действительно усложнил это. Решение состоит в том, чтобы просто связать Волшебника invalidProperty:

Wizard wiz = new Wizard();
wiz.invalidProperty().bind(textField.textProperty().isEmpty());
...