1

複数選択リストボックスをシミュレートする独自のウィジェットがあります。チェックボックスのリストが表示されます。

  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
    }

誰でもそれを達成する方法を教えてもらえますか?

よろしく、スリー

4

1 に答える 1

3

インターフェイスMultiListBoxを実装する必要がありますHasClickHandlers(クリックイベントの場合)。を介して他のイベントの使用を許可する場合UiHandlerは、の形式で他のインターフェイスが多数ありHas*Handlers、カスタムウィジェットに実装する必要があります。

于 2012-11-30T23:51:32.657 に答える