如何处理自定义 GWT 小组件的单击事件



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

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

我在我的观点中消费这个,比如

  <my:MultiListBox ui:field="myList"></my:MultiListBox>

现在,我想在我的视图中为这个"myList"字段创建一个 onClick 处理程序,例如

    @UiHandler("myList")
    void onMyListCliced(ClickEvent e) {
         //TODO: handle it
    }

任何人都可以指导如何实现它。

问候斯里

您的MultiListBox必须实现接口HasClickHandlers(在单击事件的情况下)。如果你想允许通过UiHandler使用其他事件,还有一堆其他接口的形式 Has*Handlers ,你必须在你的自定义小部件上实现。

相关内容

  • 没有找到相关文章

最新更新