我正在使用gwt并想创建自己的onClickHandler。 在谷歌文档中,我找到了一个很好的例子:
public class HandlerExample extends Composite implements ClickHandler {
private FlowPanel fp = new FlowPanel();
private Button b1 = new Button("Button 1");
private Button b2 = new Button("Button 2");
public HandlerExample() {
initWidget(fp);
fp.add(b1);
fp.add(b2);
b1.addClickHandler(this);
b2.addClickHandler(this);
}
public void onClick(ClickEvent event) {
// note that in general, events can have sources that are not Widgets.
Widget sender = (Widget) event.getSource();
if (sender == b1) {
// handle b1 being clicked
} else if (sender == b2) {
// handle b2 being clicked
}
}
}
但是在我的项目中,clickhandler方法不在按钮的文件中。有没有办法用一个处理程序处理具有不同功能的按钮?
格尔茨
答案 0 :(得分:0)
实施HasClickHandlers。然后,您可以在窗口小部件代码外部设置ClickHanlder的实现。
您是否需要为不同的按钮设置不同的ClickHandler
?如果是这样,那么也许您可以使用public
/ protected
方法为每个按钮设置ClickHandler
。
答案 1 :(得分:0)
您可以这样做:
public class HandlerExample extends Composite {
private FlowPanel fp = new FlowPanel();
private Button b1 = new Button("Button 1");
private Button b2 = new Button("Button 2");
public HandlerExample() {
initWidget(fp);
fp.add(b1);
fp.add(b2);
}
public List< HandlerRegistration > addClickHandlerToAllButtons( ClickHandler handler ) {
List< HandlerRegistration > handlerRegistrations = new ArrayList< HandlerRegistration >();
handlerRegistrations.add( b1.addClickHandler( handler ) );
handlerRegistrations.add( b2.addClickHandler( handler ) );
return handlerRegistrations;
}
}