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).

최근에는 스칼라FX 1.0.0-M8-스냅샷 방법 filterEvent 예상대로 구독을 반환합니다.(보다 ScalaFX 115호)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top