我在使用GWT的项目中ClickHandler有问题。

我想在对话框的标题中插入一个新按钮。


我创建了一个新的插入方法:addToTitle(...)
我在按钮上添加了ClickHandler


问题:按按钮单击事件不会触发。为什么?

这是我的代码:

DialogBox dialog = new DialogBox();

Button button = new Button("A new Button");

       button.addClickHandler(new ClickHandler()
        {
            @Override
            public void onClick(ClickEvent event)
            {
                Window.alert("yuhuhuhu");

            }
        });

dialog.addToTitle(button);


代码(摘自评论部分):

public class PlentyDialogWindow extends DialogBox {
    private FlowPanel captionPanel = new FlowPanel();
    public Widget closeWidget = null;
    private boolean closeOnEscKey = false;
    private FlowPanel titleContentWrapper = new FlowPanel();
    public PlentyDialogWindow(boolean isModal) {
        super( false, isModal);
        this.addStyleName("DialogBox");
        this.getElement().setId("DialogBoxId");
        this.setAnimationEnabled(true);
        this.closeWidget = generateCloseButton();
    }

    public void setCaption( String txt,Widget w) {
        captionPanel.setWidth("100%");
        this.addCaption(txt);
        this.titleContentWrapper.getElement().getStyle().setDisplay(Display.INLINE_BLOCK);
        captionPanel.add(this.titleContentWrapper);
        FlowPanel widgetWrapper = new FlowPanel();
        widgetWrapper.add(w);
        widgetWrapper.addStyleName("PlentyPopupCloseIconWrapper");
        captionPanel.add(widgetWrapper);
        captionPanel.addStyleName("Caption");
        Element td = getCellElement(0,1);
        td.setInnerHTML("");
        td.appendChild(captionPanel.getElement());
    }

    /** * * @param w */ public void addToTitle(Widget w) {
        this.titleContentWrapper.add(w);
    }
}

最佳答案

如果您唯一的问题是没有调用ClickHandler,请尝试使用addDOMHandler而不是addClickHandler

yourWidget.addDomHandler(new ClickHandler() {

  @Override
  public void onClick(ClickEvent event) {


  }
},ClickEvent.getType());

10-07 12:13