gpt4 book ai didi

java - ReactFX Consumer 监听多个 EventStream

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:46 25 4
gpt4 key购买 nike

这个问题可能是针对ReactFX的创建者的,但欢迎其他人回答。

我目前开始在 JavaFX 应用程序中使用 ReactFX 进行数据共享和事件处理。我的问题是一个类如何订阅来监听来自两个(或更多)不同 EventStreams 的事件。假设在 Controller class我有一个textfield可能会更新为 new text(String) ,所以这个类将实现 Consumer<String> 。但你可能也想要这个textfield更新为 new Integer (例如)来自完全不同的来源,因此它必须实现 Consumer<Integer> ,只有你不能这样做,因为它已经实现了 Consumer<String> .

我考虑过创建一个带有 id 字段(例如 Enum )和 Object field 的包类。包含数据,我们将其命名为 ReactFXEventBundle 。只有此类的实例才能用作 Events ,消费者可以通过分析 id 字段来识别事件的类型。因此,所有 Consumer 类都将实现 Consumer<ReactFXEventBundle> 。这是正确的方法吗?

最佳答案

为了确保我们意见一致,我假设您的情况如下

class Controller {
TextField getTextField();
}

EventStream<String> strings;
EventStream<Integer> integers;

并且您希望将字符串整数路由到TextField的textProperty()。您可以这样做:

EventStreams.merge(
strings,
integers.map(Integer::toString)
).feedTo(controller.getTextField().textProperty());

换句话来说,您将整数流转换为字符串流,合并两个字符串流,并将合并的流馈送到字段的文本属性中。 (feedTo(property) 只是 subscribe(property::set) 的简写)。

请注意,您的 Controller 类不必直接实现 Consumer。使用者实例是根据 property::set 方法引用创建的。

关于java - ReactFX Consumer 监听多个 EventStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27862175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com