2011-12-12 2 views
1

ScrollPanel을 확장 중이며이 새로운 위젯으로 내 자신의 맞춤 이벤트를 처리하고 싶습니다.GWT에서 위젯을 확장하는 경우 조상의 EventBus를 사용하는 방법은 무엇입니까?

HasMyHandlers 인터페이스를 fireEvent(MyEvent event)HandlerRegistration addMyHandler(MyHandler handler)의 두 가지 방법으로 만들었습니다.

먼저 개인 회원 SimpleEventBus eventBus을 만들었지 만 다음으로 조상 클래스에는 이미 자체 복사본이 있어야한다고 생각했습니다.

조상의 이벤트 버스를 사용할 수 있습니까? 예 : 조상의 이벤트 버스를 사용하여 처리기를 등록하고 그에 따라 처리 할 수 ​​있습니까?

답변

3

예, 가능합니다. 이 작업을 수행하는 표준 방법은 HandlerRegistration addMyHandler(MyHandler handler)의 구현입니다 :

public class MyWidget extends Widget implements HasMyHandlers { 

    @Override 
    public HandlerRegistration addMyHandler(MyHandler handler) { 
    return addHandler(handler, MyEvent.getType()); 
    } 

    // Other methods 
} 

Widget.addHandler(...) 방법은 위젯의 HandlerManager에 사용자 지정 이벤트 핸들러를 연결하는 메커니즘을 제공합니다.

모든 등록 된 핸들러에게 이벤트를 발생 시키려면 Widget.fireEvent(...) 메소드를 사용하십시오. 그래서 당신이 할 수있는 이벤트를 발생합니다 :

fireEvent(new MyEvent(yourEventData)); 

그것은 당신의 이벤트도 GwtEvent 클래스를 확장해야한다는 지적 가치가있다.

+0

그러나 등록 된 모든 처리기가 발생할 때 이벤트를 발생시키는 방법은 무엇입니까? – Dims

+0

@Dims 제 대답에 좀 더 자세한 내용을 추가했습니다. – Strelok

+0

감사합니다. 그러나 Widget.fireEvent는 GwtEvent <> 유형의 인수를 받아들이므로 클래스를 내 이벤트로 확장해야한다는 의미입니다. 맞습니까? – Dims

관련 문제