【问题标题】:How to get the source of a property by subscribing to an event stream?如何通过订阅事件流来获取属性的来源?
【发布时间】:2018-01-26 05:27:11
【问题描述】:

如果我有一个 JavaFX 属性并且我从这个属性创建了一个事件流:

EventStreams.nonNullValuesOf(node.boundsInParentProperty())

是否有可能在创建时设置源(在本例中为“节点”)或稍后在订阅中获取此对象?

例如:

EventStream<...> stream = EventStreams.nonNullValuesOf(node.boundsInParentProperty());

...
stream.subscribe((node, bounds) -> ...);

或在创建时:

EventStream<...> stream = EventStreams.valueAndSource(node.boundsInParentProperty(), node);

【问题讨论】:

    标签: java javafx reactfx


    【解决方案1】:

    好的,我得到了我想要的:

    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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多