我有一个称为BlahModel的模型。由BlahController(BlahModel blahModel)引用。我的目标是BlahModel可以调度和事件
Event.fireEvent(blahModel,...)
BlahController会听到这开始jan动作。到目前为止,我一直在使用某种Observable Integer,并且一直在观看,但那当然感觉不对。
我的问题是,非GUI组件到底应该怎么做才能实现buildEventDispatchChain,以便其他非GUI组件可以监听它。
任何帮助是极大的赞赏。
最佳答案
EventDispatchChain
设计用于通过嵌套层次结构(例如场景图)冒泡的事件-可能不是您想要/不需要的。
ReactFX的EventStream
是与ObservableValue
类似的事件:
import org.reactfx.EventSource;
import org.reactfx.EventStream;
import org.reactfx.Subscription;
class BlahModel {
private EventSource<Integer> events = new EventSource<>();
public EventStream<Integer> events() { return events; }
void foo() {
// fire event
events.push(42);
}
}
class BlahController {
private final Subscription eventSubscription;
BlahController(BlahModel blahModel) {
eventSubscription = blahModel.events().subscribe(
i -> System.out.println("Received event " + i));
}
public void dispose() {
eventSubscription.unsubscribe();
}
}