Как удалить фильтры событий при использовании filterEvents()?

StackOverflow https://stackoverflow.com//questions/21035298

  •  21-12-2019
  •  | 
  •  

Вопрос

Здравствуйте, я хочу использовать 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)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top