首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactFX消费者收听多个EventStream

ReactFX消费者收听多个EventStream
EN

Stack Overflow用户
提问于 2015-01-09 13:57:42
回答 1查看 308关注 0票数 1

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-09 19:02:33

为了确保我们在同一页上,我假设您的情况如下

代码语言:javascript
复制
class Controller {
    TextField getTextField();
}

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

您希望将stringsintegers路由到TextField的textProperty()。你就是这样做的:

代码语言:javascript
复制
EventStreams.merge(
    strings,
    integers.map(Integer::toString)
).feedTo(controller.getTextField().textProperty());

换句话说,可以将整数流转换为字符串流,合并两个字符串流,并将合并后的流提供给字段的text属性。(feedTo(property)只是subscribe(property::set)的缩写)。

注意,您的控制器类不必直接实现Consumer。使用者实例是从property::set方法引用创建的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27862175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档