Я нашел хорошее объяснение здесь.
Когда intProperty.set (7168) называется, он активирует событие недействительности к otherProperty. Получив это событие недействительности, otherProperty просто отмечает, что его значение не равно . Он не сразу выполняет пересчет своего значения , запрашивая значение intProperty. Перерасчет выполняется позже, когда вызывается otherProperty.get(). Представьте себе, если вместо этого вызова метода intProperty.set() только один раз, как в приведенном выше коде, мы вызываем intProperty.set() несколько раз; otherProperty все еще пересчитывает значение только один раз.
Как после тестирования я нашел этот пример.
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
public class InvalidMean{
public static void main(String[] args){
IntegerProperty num1 = new SimpleIntegerProperty(15);
IntegerProperty num2 = new SimpleIntegerProperty(10);
// num2.bind(num1);
// num1.set(56);
System.out.println(num2);
}
}
Выполнить этот код вы получите этот результат:
IntegerProperty [value: 10]
Теперь удалить комментарий от комментируемых линий. и вы получите этот результат. Значение
IntegerProperty [bound, invalid]
num2
«s становится недействительным, поскольку новое значение прибыли, но еще не обновлен. Как JavaFX Doc описать это просто из-за ленивой оценки.
JavaFX связывание и реализация собственности все поддерживает ленивый оценки, что означает, что, когда происходит изменение, значение не немедленно пересчитывается. Пересчет происходит позже, если и когда запрашивается значение .
Если вы хотите, чтобы значение должно быть действительным вызовом num2.getValue();
или num2.get();
Перед System.out.println(num2);
вы увидите свойство будет действовать тогда.
Примечание: В приведенном выше примере num2.bind(num1);
и num1.set(56);
оба будут делать недействительным значение num2
, поскольку связывают уже Изменяя значение num2
и set()
также пытается изменить значение.
Здесь [блог об изменениях по сравнению с недействительными] (http: //blog.netopyr.com/2012/02/08/when-to-use-a-changelistener-or-an-invalidationlistener /) от предыдущего ведущего разработчика свойств JavaFX 2 и реализации привязки. – jewelsea