Вот краткое описание поведения, которое мне нужно:
Код: Выделить всё
ObjectProperty obp = new SimpleObjectProperty();
BooleanProperty hasStuff = new SimpleBooleanProperty();
hasStuff.bind(/* What goes here?? */);
// ObservableProperty has null value
assertFalse(hasStuff.getValue());
obp.set(FXCollections.observableArrayList());
// ObservableProperty is no longer null, but the list has not contents.
assertFalse(hasStuff.getValue());
obp.get().add("Thing");
// List now has something in it, so hasStuff should be true
assertTrue(hasStuff.getValue());
obp.get().clear();
// List is now empty.
assertFalse(hasStuff.getValue());
The Bindings. Метод select(...) теоретически делает то, что я хочу, за исключением того, что нет Bindings.selectObservableCollection(...) и происходит приведение возвращаемого значения из общего select(...) и передать его в Bindings.isEmpty(...) не работает. То есть результат этого:
Код: Выделить всё
hasStuff.bind(Bindings.isEmpty((ObservableList) Bindings.select(obp, "value")));
Код: Выделить всё
java.lang.ClassCastException: com.sun.javafx.binding.SelectBinding$AsObject cannot be cast to javafx.collections.ObservableList
Подробнее здесь: https://stackoverflow.com/questions/216 ... -an-object