2014-01-10 48 views
1

你好,我想,所以我這樣做是爲了重新包裝的鼠標事件使用rxscala和scalafx在一起:如何在使用filterEvents()時移除事件過濾器?

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

的問題是,塊裏面我想刪除通過filterEvent()註冊的事件過濾器,但看着它我看到filterEvent()不保留對事件過濾器的引用,所以我不能使用stage.removeEventFilter()。我沒有看到相應的removeFilterEvent(),那麼如何刪除使用filterEvent()註冊的事件過濾器?

我想一個解決方法是不使用filterEvent(),而是使用javafx的addEventFilter(),但語法更糟。

回答

0

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

在最新的ScalaFX 1.0.0-M8-SNAPSHOT方法filterEvent按預期返回訂閱。 (見ScalaFX Issue 115

相關問題