JavaFX8: BooleanBinding отключил свойство для содержимого textproperty не работает - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь создать логическую привязку для свойства disabled узла. Узел должен быть включен, если значение textProperty заканчивается определенной строкой:

myheckbox.disabledProperty().bind(Bindings.createBooleanBinding(()
                -> myLabel.getText().endsWith(".txt"), myLabel.textProperty()));

Не компилируется из-за: Метод bind (BooleanBinding) не определен для типа ReadOnlyBooleanProperty

Как могу я связать это? Флажок изначально отключен и должен быть включен, если метка содержит имя файла, оканчивающееся на «.txt»

1 Ответ

1 голос
/ 14 марта 2020

Вы пытаетесь связать неправильное свойство. Есть два свойства, связанные с отключенным состоянием узла:

  1. Node#disabled (только для чтения)

    Указывает, является ли или не это Node отключено. Node станет отключенным, если для disable установлено значение true либо для самого себя, либо для одного из его предков в графе сцены.

  2. Node#disable (чтение-запись)

    Определяет индивидуальное отключенное состояние этого Node. Установка disable в значение true приведет к отключению этого Node и любых подузлов. Это свойство следует использовать только для установки отключенного состояния Node. Для запроса отключенного состояния Node вместо этого следует использовать свойство disabled, поскольку вполне возможно, что Node было отключено в результате отключения предка, даже если в этом состоянии было * отдельное состояние disable. Node неверно.

Вам необходимо связать последнее свойство.

myheckbox.disableProperty().bind(Bindings.createBooleanBinding(()
                -> myLabel.getText().endsWith(".txt"), myLabel.textProperty()));
...