Javafx 将 SetProperty 绑定到从可观察对象生成集合的回调
Javafx bind SetProperty to a callback that produce a set from an observable
我有一个 SetProperty<Point>
和一个生成 Stream<Point>
的函数。
Stream<Point> generatePoints(Point p) {
// ...
}
ObjectProperty<Point> selectedPointProperty() {
// ...
}
SetProperty<Point> generatedPoints = new SimpleSetProperty();
我想将 generatedPoints
绑定到将 generatedPoints
应用于 selectedPointProperty()
结果的结果。我尝试了以下代码,但它有类型错误。
generatedPoints.bind(Bindings.createObjectBinding(() -> generatePoints(selectedPointProperty().get()).collect(Collectors.toSet()),
selectedPointProperty()));
A SetProperty<T>
不是 Property<Set<T>>
而是 Property<ObservableSet<T>>
。
因此 属性 所需的类型和由
编辑的 return 类型
generatePoints(selectedPointProperty().get()).collect(Collectors.toSet())
不匹配。您需要从 Callable
中 return 一个 ObservableSet
,例如:
generatedPoints.bind(Bindings.createObjectBinding(() -> FXCollections.observableSet(generatePoints(selectedPointProperty().get()).toArray(Point[]::new)),
selectedPointProperty()));
我有一个 SetProperty<Point>
和一个生成 Stream<Point>
的函数。
Stream<Point> generatePoints(Point p) {
// ...
}
ObjectProperty<Point> selectedPointProperty() {
// ...
}
SetProperty<Point> generatedPoints = new SimpleSetProperty();
我想将 generatedPoints
绑定到将 generatedPoints
应用于 selectedPointProperty()
结果的结果。我尝试了以下代码,但它有类型错误。
generatedPoints.bind(Bindings.createObjectBinding(() -> generatePoints(selectedPointProperty().get()).collect(Collectors.toSet()),
selectedPointProperty()));
A SetProperty<T>
不是 Property<Set<T>>
而是 Property<ObservableSet<T>>
。
因此 属性 所需的类型和由
编辑的 return 类型generatePoints(selectedPointProperty().get()).collect(Collectors.toSet())
不匹配。您需要从 Callable
中 return 一个 ObservableSet
,例如:
generatedPoints.bind(Bindings.createObjectBinding(() -> FXCollections.observableSet(generatePoints(selectedPointProperty().get()).toArray(Point[]::new)),
selectedPointProperty()));