Frage

Hallo, ich möchte rxscala und scalafx zusammen verwenden, also habe ich Folgendes getan, um Mausereignisse neu zu packen:

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

Das Problem ist, dass im Inneren Subscription { ??? } Block Ich möchte den Ereignisfilter entfernen, der registriert wurde filterEvent() aber wenn ich es mir ansehe, sehe ich das filterEvent() behält keinen Verweis auf den Ereignisfilter bei, daher kann ich ihn nicht verwenden stage.removeEventFilter().Ich sehe kein removeFilterEvent() Entweder gleichwertig, also wie werden Ereignisfilter mit registriert? filterEvent() ENTFERNT?

Ich denke, eine Problemumgehung besteht darin, nicht zu verwenden filterEvent() und verwenden Sie stattdessen die Javafxs addEventFilter() aber die Syntax ist schlechter.

War es hilfreich?

Lösung

Derzeit können Sie verwenden addEventFilter(eventType, eventHandler) Und removeEventFilter(eventType, eventHandler).

Spätestens ScalaFX 1.0.0-M8-SNAPSHOT Methode filterEvent gibt das Abonnement wie erwartet zurück.(sehen ScalaFX-Ausgabe 115)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top