Как удалить фильтры событий при использовании filterEvents()?
Вопрос
Здравствуйте, я хочу использовать 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()
эквивалентен, так как же фильтры событий регистрируются с помощью filterEvent()
удаленный?
Я думаю, обходной путь - не использовать filterEvent()
и вместо этого используйте javafx addEventFilter()
но синтаксис хуже.
Решение
В настоящее время вы можете использовать addEventFilter(eventType, eventHandler)
и removeEventFilter(eventType, eventHandler)
.
В последнем ScalaFX 1.0.0-M8-SNAPSHOT метод filterEvent
возвращает подписку, как и ожидалось.(видеть ScalaFX, выпуск 115)