使用removeEventListener未从任何组件中删除ZK事件侦听器

时间:2013-01-18 07:06:23

标签: java events zk

我无法从制表符和工具栏按钮中删除事件侦听器。

我在工具栏按钮中添加了一个eventlistener,然后在做了一些保存部分后,我无法删除监听器。

exitButtontoolbarbutton

两种方法属于同一类。但第一次exitButtononClick事件中有一些不同的逻辑,但是当我保存数据并通过disable()调用globalcommand方法删除onClick事件侦听器时。

@AfterCompose
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
    Selectors.wireComponents(view, this, false);
    exitButton.addEventListener("onClick", new EventListener<Event>() {

        public void onEvent(Event evt) throws Exception {
            Messagebox.show("adddingggg");
        }
    });
}

@GlobalCommand
public void disable() {
    exitButton.removeEventListener("onClick", new EventListener<Event>() {

        public void onEvent(Event evt) throws Exception {
            Messagebox.show("remocvee");
        }
    });
}

如何在保存后删除事件监听器?

1 个答案:

答案 0 :(得分:1)

请注意,您的EventListener实例必须返回true
如果它是Object#equal的参数,则为前一个添加的监听器调用。

EventListener evl;

@AfterCompose
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
    Selectors.wireComponents(view, this, false);
    exitButton.addEventListener("onClick", evl = new EventListener<Event>() {

        public void onEvent(Event evt) throws Exception {
            Messagebox.show("adddingggg");
        }
    });
}

@GlobalCommand
public void disable() {
    if(exitButton.removeEventListener("onClick", evl))
            Messagebox.show("success");
}

这将删除EventListener,并在成功时显示消息 问题是你创建了一个新对象,所以它不等于旧对象。