1

CompositeGWT でウィジェットを作成していますが、コンポジットの要素が選択されHasSelectionHanderたときにウィジェットを実装して起動したいと考えています。SelectionEvent

これまでのところ、私は次のものを持っています:

public class SelectionClass extends Composite implements HasSelectionHandlers<Integer>{

    private final EventBus eventBus = new SimpleEventBus();

    //...   

    private void somethingHappens(int i){
            //How do i fire an event?
    }       

    @Override
    public HandlerRegistration addSelectionHandler(SelectionHandler<Integer> handler) {
            return eventBus.addHandler(SelectionEvent.getType(), handler);
    }       

}

public AnotherClass{

    // ...  

    SelectionClass.addSelectionHandler(new SelectionHandler<Integer>() {

            @Override
            public void onSelection(SelectionEvent<Integer> event) {
                    Window.alert(String.valueOf(event.getSelectedItem()));
            }       
    });     

    // ...  
}

イベントの発生を正確に実装する方法について少し混乱しています。EventBusSelectionClass (上記) でを使用する権利はありますか? どんな助けでも大歓迎です。

4

1 に答える 1

2

イベントの発生は API を介して行われます。GWT 2.4 では、メソッドをスーパークラスにEventBus委譲できるため、'EventBus' の独自のインスタンスをインスタンス化する必要はありません。addXXXHandlerComposite

次のようなものになります。

public class SelectionClass extends Composite implements HasSelectionHandlers<Integer>{

    //...   

    private void somethingHappens(int i){
            SelectionEvent.<Integer>fire(this, i);
    }       

    @Override
    public HandlerRegistration addSelectionHandler(SelectionHandler<Integer> handler) {
            return super.addHandler(handler, SelectionEvent.getType());
    }       

}
于 2013-05-28T14:33:54.503 に答える