2011-11-29 17 views
0

是否有一個選項可以將不同的事件處理程序捆綁到一個java文件中?如何在handlerManager中綁定處理程序?

像:

public interface MyHandlerr extends EventHandler { 
void myEvent1(Event1 event); 
void myEvent2(Event2 event); 
} 
的那一刻,我爲每個事件一個處理器

....但我不喜歡它。

格爾茨

回答

1

您可以創建自己的EventHandler接口,用於處理多個事件

public interface MultipleEventsHandler extends EventHandler { 
    void onMyEvent(MyEvent event); 
    void onMyOtherEvent(MyOtherEvent event); 
} 

然後在你的事件類,您可以定義的方法應該叫

public class MyEvent extends GwtEvent<MultipleEventsHandler> { 
    public static final Type<MultipleEventsHandler> TYPE = new Type<MultipleEventsHandler>(); 

    @Override 
    public Type<MultipleEventsHandler> getAssociatedType() { 
      return TYPE; 
    } 

    @Override 
    protected void dispatch(MultipleEventsHandler handler) { 
      handler.onMyEvent(this); 
    } 
} 

public class MyOtherEvent extends GwtEvent<MultipleEventsHandler> { 
    public static final Type<MultipleEventsHandler> TYPE = new Type<MultipleEventsHandler>(); 

    @Override 
    public Type<MultipleEventsHandler> getAssociatedType() { 
      return TYPE; 
    } 

    @Override 
    protected void dispatch(MultipleEventsHandler handler) { 
      handler.onMyOtherEvent(this); 
    } 
} 

如果你只是想減少類/接口的數量,那麼你可以把EventHandler放在你的事件類中,例如

public class MyEvent extends GwtEvent<MyEvent.Handler> { 

    public interface Handler extends EventHandler { 
     void onMyEvent(SomeEvent event); 
    } 

    public static final Type<MyEvent.Handler> TYPE = new Type<MyEvent.Handler>(); 


    @Override 
    public Type<MyEvent.Handler> getAssociatedType() { 
      return TYPE; 
    } 

    @Override 
    protected void dispatch(MyEvent.Handler handler) { 
      handler.onMyOtherEvent(this); 
    } 
} 
+0

謝謝你的好例子:) –

相關問題