在GWT中以编程方式调用click()函数

Kan*_*dha 5 gwt

我想在GWT中为Button调用click事件函数...我尝试了这段代码,但它无法正常工作..

Button btnAddField = new Button();
btnAddField.setText("Add");
btnAddField.setWidth("225px");
btnAddField.addClickHandler(new btnAddFieldButtonClickListener());  


private class btnAddFieldButtonClickListener implements ClickHandler{   
        public void onClick(ClickEvent event) {
Window.alert("Called Click Event");
}
}
Run Code Online (Sandbox Code Playgroud)

这个函数会在单击按钮时调用,但调用此函数时不会调用 btnAddField.click()

omn*_*nom 6

你也可以尝试:

view.btnAddField.fireEvent(new ClickEvent() { } );
Run Code Online (Sandbox Code Playgroud)

(这是一个小黑客,因为com.google.gwt.event.dom.client.ClickEvent有保护构造函数.)

要么

DomEvent.fireNativeEvent(Document.get().createClickEvent(0, 0, 0, 0, 0,
            false, false, false, false), view.btnAddField);
Run Code Online (Sandbox Code Playgroud)

然后,在这两种情况下,都不需要为处理程序创建单独的类并打破封装,以便测试单击事件.


Kan*_*dha 2

我通过使用这段代码解决了这个问题

btnAddField.fireEvent(new ButtonClickEvent ())

private class ButtonClickEvent extends ClickEvent{
        /*To call click() function for Programmatic equivalent of the user clicking the button.*/
    }
Run Code Online (Sandbox Code Playgroud)

现在工作正常。