Java 是否禁用组合上的ClickEvent?
我在GWT中实现了一个复合按钮,希望实现HasEnabled接口来启用/禁用此按钮上的单击事件。这就是我所做的:Java 是否禁用组合上的ClickEvent?,java,javascript,gwt,Java,Javascript,Gwt,我在GWT中实现了一个复合按钮,希望实现HasEnabled接口来启用/禁用此按钮上的单击事件。这就是我所做的: public class MyButton extends Composite implements HasText HasClickHandlers, HasEnabled { FocusPanel panel; boolean enabled; public MyButton() { panel = new FocusPanel(); labe
public class MyButton extends Composite implements HasText HasClickHandlers, HasEnabled {
FocusPanel panel;
boolean enabled;
public MyButton() {
panel = new FocusPanel();
label = new Label("Test");
panel.add(label);
initWidget(panel);
}
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
return panel.addClickHandler(handler);
}
@Override
public boolean isEnabled() {
return enabled;
}
@Override
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
}
启用设置为false时,如何禁用面板上的ClickHandler?
HandlerRegistration handlerRegistration = panel.addClickHandler(handler);
当您要禁用它时:
if (handlerRegistration != null) {
handlerRegistration.removeHander();
}
最简单的方法是编写包装器单击处理程序,该处理程序仅在启用组件时执行“真实”单击处理程序:
@Override
public HandlerRegistration addClickHandler(final ClickHandler handler) {
return panel.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if(enabled){
handler.onClick(event);
}
}
});
}
但是,当我想稍后启用单击处理程序而不重新设置它时,请重新添加它!panel.addClickHandler(handler);