1

您好我想一起使用 rxscala 和 scalafx 所以我这样做是为了重新打包鼠标事件:

def mouseEvents: Observable[MouseEvent] = Observable.create(observer => {
  stage.filterEvent(MouseEvent.Any)((event: MouseEvent) => {
    observer.onNext(event)
    event.consume
  })
  Subscription { ??? }
})

问题是在Subscription { ??? }块内我想删除注册的事件过滤器,filterEvent()但看着它我发现它filterEvent()没有保留对事件过滤器的引用,所以我不能使用stage.removeEventFilter(). 我也没有看到removeFilterEvent()等价物,那么如何使用 remove 注册事件过滤器filterEvent()

我想一种解决方法是不使用filterEvent(),而是使用 javafx addEventFilter(),但语法更糟。

4

1 回答 1

0

目前您可以使用addEventFilter(eventType, eventHandler)removeEventFilter(eventType, eventHandler)

在最新的ScalaFX 1.0.0-M8-SNAPSHOT方法filterEvent中按预期返回订阅。(参见ScalaFX 第 115 期

于 2014-01-10T04:45:00.793 回答