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

标签 java events zk

我在从选项卡和工具栏按钮中删除事件监听器时遇到问题。

我已将事件监听器添加到工具栏按钮,然后在完成一些保存部分后,我无法删除监听器。

exitButton 是一个工具栏按钮

这两种方法都在同一个类中。但是第一次 exitButtononClick 事件上有一些不同的逻辑,但是当我保存数据并通过 globalcommand 调用 disable() 方法时 删除 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");
        }
    });
}

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

最佳答案

请记住,您的 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");
}

这将删除事件监听器,并在成功时显示消息。
您的问题是您创建了一个新对象,因此它不等于旧对象。

关于java - 未使用removeEventListener从任何组件中删除ZK事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14393998/

相关文章:

java - 启用高复制数据存储 - Maven GWT + GAE

c++ - 在 C++ 中监听事件

events - 为什么当我尝试使用 Google Tag Manager 跟踪时,Google Analytics 中的出站链接等于 "(not set)"?

zk - 使用 zk 从 session 中获取值(value)

java - 如何为此线程而不是系统设置 SecurityManager?

java - 幻影法?

java - 使用扫描仪读取Java中输入的许多字符串

java - SWT 组合显示列表可见时的事件通知

java - 如何清除列表框? (ZK)

java - 如何使用 ZK 在 UI 中迭代和加载属性文件值?