删除Click Handler-GWT

时间:2012-04-26 13:48:44

标签: gwt gwt2

如何删除GWT中的ClickHandler事件?我为一个按钮添加了addClickHandler()事件,我想删除ClickHandler事件。我尝试了HandlerRegistration方法但是它无法删除处理程序,这是一个片段:

notification.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            // TODO Auto-generated method stub
        }

    });  

我想删除带有通知的处理程序!

Note:
Notification is the button instance that calls the handler!

2 个答案:

答案 0 :(得分:22)

每个add...Handler方法返回HandlerRegistration接口。此接口包含removeHandler()方法。如果要删除处理程序,只需将返回的接口存储在变量中,并在想要删除处理程序时调用removeHandler。

HandlerRegistration handler;

handler = button.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                // ...

            }
        });
handler.removeHandler();            

答案 1 :(得分:1)

这对我有用,我在绑定事件时获得了Handler注册,

closeIconHandlerRegistration = closeImg.addClickHandler( new ClickHandler()
        {
            @Override
            public void onClick( ClickEvent event )
            {
                addCloseClickHanlder();
            }
        } );

之后当我需要删除处理程序时......

if ( this.getCloseButtonHandlerRegistration() != null )
        {
            this.getCloseButtonHandlerRegistration().removeHandler();
            this.getCloseImg().addClickHandler( new ClickHandler()
            {

                @Override
                public void onClick( ClickEvent event )
                {
                    SaveCancelCommissionChangeEvent saveEvt = new SaveCancelCommissionChangeEvent();
                    saveEvt.setSave( false );
                    tabEventBus.fireEvent( saveEvt );
                }
            } );
        }