我在从选项卡和工具栏按钮中删除事件监听器时遇到问题。
我已将事件监听器添加到工具栏按钮,然后在完成一些保存部分后,我无法删除监听器。
exitButton
是一个工具栏按钮
。
这两种方法都在同一个类中。但是第一次 exitButton
在 onClick
事件上有一些不同的逻辑,但是当我保存数据并通过 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/