这个问题可能是针对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>。这是正确的做法吗?
发布于 2015-01-09 19:02:33
为了确保我们在同一页上,我假设您的情况如下
class Controller {
TextField getTextField();
}
EventStream<String> strings;
EventStream<Integer> integers;您希望将strings和integers路由到TextField的textProperty()。你就是这样做的:
EventStreams.merge(
strings,
integers.map(Integer::toString)
).feedTo(controller.getTextField().textProperty());换句话说,可以将整数流转换为字符串流,合并两个字符串流,并将合并后的流提供给字段的text属性。(feedTo(property)只是subscribe(property::set)的缩写)。
注意,您的控制器类不必直接实现Consumer。使用者实例是从property::set方法引用创建的。
https://stackoverflow.com/questions/27862175
复制相似问题