如何处理自定义gwt小部件的单击事件

如何处理自定义gwt小部件的单击事件,gwt,event-handling,uibinder,custom-widgets,Gwt,Event Handling,Uibinder,Custom Widgets,我有一个我自己的小部件,它模拟了一个多选列表框。 它将有一个复选框列表 public class MultiListBox extends Composite implements IsWidget { private static MultiListBoxUiBinder uiBinder = GWT .create(MultiListBoxUiBinder.class); interface MultiListBoxUiBinder extends

我有一个我自己的小部件,它模拟了一个多选列表框。 它将有一个复选框列表

  public class MultiListBox extends Composite implements IsWidget
  {
    private static MultiListBoxUiBinder uiBinder = GWT
        .create(MultiListBoxUiBinder.class);

    interface MultiListBoxUiBinder extends
        UiBinder<Widget, MultiListBox> {
    }

    public MultiListBox() {
       initWidget(uiBinder.createAndBindUi(this));
    }
    @UiField ScrollPanel scrollPanel;
    @UiField FlowPanel flowPanel;

    private final List<CheckBox> checkboxes = new ArrayList<CheckBox>();
    private final List<String> selectedValues = new  ArrayList<String>();

@Override
public void addItem(final String value, final String text){

    final CheckBox checkbox = new CheckBox(text);
    checkbox.setFormValue(value);

    checkbox.addClickHandler(new ClickHandler()
    {
        public void onClick(final ClickEvent event)
        {
            final CheckBox chkbox = (CheckBox)event.getSource();
            if(chkbox.getValue())
            {
                selectedValues.add(value);
            }
            else
            {
                selectedValues.remove(value);
            }
        }
    });

    flowPanel.add(checkbox);
    checkboxes.add(checkbox);
}

@Override
public List<String> getSelectedValues(){
    return selectedValues;
}

@Override
public void clear() {
    checkboxes.clear();
    selectedValues.clear();
    flowPanel.clear();
}

@Override
public int getItemCount() {
    return checkboxes.size();
}

  }
请任何人指导如何实现这一目标

问候,,
Sree

您的
多列表框
必须实现界面
HasClickHandlers
(在发生click事件的情况下)。
如果您希望允许通过
UiHandler
使用其他事件,则有一系列其他接口,其形式为
Has*handler
,您必须在自定义小部件上实现这些接口

非常感谢您的回复。。。我将下面的方法添加到我的MultiListBox.java类`code'@Override public handler注册addClickHandler(ClickHandler){返回this.addHandler(handler,ClickEvent.getType());}并处理了一个ClickEvent@UiHandler(“specifications”)void onSpecialtyChange(ClickEvent e){}但我不了解这个方法,当我点击小部件中的复选框时。复选框将被动态添加。我认为我现在不明白您的问题是什么。在特殊更改(单击事件e)中,您在哪里添加了
。。。请忽略我先前的答复。它没有进入onMyListCliced(ClickEvent e)实际上,复选框小部件是动态添加的。我解决了这个问题。我修改了addItem()方法。。在复选框中添加行,单击处理程序fireEvent(事件);非常感谢你的努力
  <my:MultiListBox ui:field="myList"></my:MultiListBox>
    @UiHandler("myList")
    void onMyListCliced(ClickEvent e) {
         //TODO: handle it
    }