0

我无法从选项卡和工具栏按钮中删除事件侦听器。

我已经向工具栏按钮添加了一个事件监听器,然后在做了一些保存部分之后我无法删除监听器。

exitButton是一个toolbarbutton

两种方法都在同一个类中。但是第一次 TimeexitButton对事件有一些不同的逻辑,onClick但是当我保存数据并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");
        }
    });
}

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

4

1 回答 1

1

请记住,您的EventListener实例必须 return 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,并在成功时显示消息。
您的问题是您创建了一个新对象,因此它不等于旧对象。

于 2013-01-18T07:23:11.687 回答