JavaFX:如何监听非 UI 对象上的事件
JavaFX: How to listen for events on non-UI object
我有一个模型,我称之为 BlahModel。它由 BlahController(BlahModel blahModel) 引用。我的目标是 BlahModel 可以调度和事件
Event.fireEvent(blahModel,...)
BlahController 听到启动 jan 动作的声音。截至目前,我一直在使用某种 Observable Integer 并观察它,但当然感觉不对。
我的问题是,非 GUI 组件到底应该做什么来实现 buildEventDispatchChain,以便其他非 GUI 组件可以收听它。
非常感谢任何帮助。
EventDispatchChain
专为在嵌套层次结构(例如场景图)中冒泡的事件而设计——可能不是您 want/need.
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();
}
}
我有一个模型,我称之为 BlahModel。它由 BlahController(BlahModel blahModel) 引用。我的目标是 BlahModel 可以调度和事件
Event.fireEvent(blahModel,...)
BlahController 听到启动 jan 动作的声音。截至目前,我一直在使用某种 Observable Integer 并观察它,但当然感觉不对。
我的问题是,非 GUI 组件到底应该做什么来实现 buildEventDispatchChain,以便其他非 GUI 组件可以收听它。
非常感谢任何帮助。
EventDispatchChain
专为在嵌套层次结构(例如场景图)中冒泡的事件而设计——可能不是您 want/need.
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();
}
}