如何在Composite GWT中实现SelectionEvent

时间:2013-05-28 14:28:12

标签: java events gwt

我正在GWT中编写一个Composite小部件,并且希望它能够实现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()));
            }       
    });     

    // ...  
}

我对如何实现事件的触发感到有点困惑。我是否正确使用SelectionClass中的EventBus(上图)。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

事件的触发是通过EventBus API完成的,在GWT 2.4中,您不需要实例化您自己的'EventBus'实例,因为您可以将addXXXHandler方法委托给超级Composite类。

它类似于以下内容:

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());
    }       

}