如何通过订阅事件流获取 属性 的来源?
How to get the source of a property by subscribing to an event stream?
如果我有一个 JavaFX 属性 并且我从这个 属性 创建一个事件流:
EventStreams.nonNullValuesOf(node.boundsInParentProperty())
是否可以在创建时设置源(在本例中为 "node")或稍后在订阅中获取此对象?
例如:
EventStream<...> stream = EventStreams.nonNullValuesOf(node.boundsInParentProperty());
...
stream.subscribe((node, bounds) -> ...);
或在创建时:
EventStream<...> stream = EventStreams.valueAndSource(node.boundsInParentProperty(), node);
好的,我得到了我想要的:
EventStreams.nonNullValuesOf(node.boundsInParentProperty()).map(bounds -> ...)
我的问题是我有一个包含 N 个节点对象的列表,这些节点对象在迭代时是可访问的。解决了我的问题:
EventStream<Tuple2<Node, Bounds>> eventStream = nodes.stream().
map(node -> EventStreams.nonNullValuesOf(node.boundsInParentProperty()).map(bounds -> Tuples.t(node, bounds))).
reduce((es, esAccu) -> EventStreams.merge(es, esAccu)).
orElse(EventStreams.never());
如果我有一个 JavaFX 属性 并且我从这个 属性 创建一个事件流:
EventStreams.nonNullValuesOf(node.boundsInParentProperty())
是否可以在创建时设置源(在本例中为 "node")或稍后在订阅中获取此对象?
例如:
EventStream<...> stream = EventStreams.nonNullValuesOf(node.boundsInParentProperty());
...
stream.subscribe((node, bounds) -> ...);
或在创建时:
EventStream<...> stream = EventStreams.valueAndSource(node.boundsInParentProperty(), node);
好的,我得到了我想要的:
EventStreams.nonNullValuesOf(node.boundsInParentProperty()).map(bounds -> ...)
我的问题是我有一个包含 N 个节点对象的列表,这些节点对象在迭代时是可访问的。解决了我的问题:
EventStream<Tuple2<Node, Bounds>> eventStream = nodes.stream().
map(node -> EventStreams.nonNullValuesOf(node.boundsInParentProperty()).map(bounds -> Tuples.t(node, bounds))).
reduce((es, esAccu) -> EventStreams.merge(es, esAccu)).
orElse(EventStreams.never());