我在使用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());