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-スナップショット 方法 filterEvent 期待どおりにサブスクリプションを返します。(見る ScalaFX 第 115 号)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top