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)
.
최근에는 스칼라FX 1.0.0-M8-스냅샷 방법 filterEvent
예상대로 구독을 반환합니다.(보다 ScalaFX 115호)
제휴하지 않습니다 StackOverflow