当前位置: 首页 > 知识库问答 >
问题:

如何在释放时删除Eclipse Widget中的侦听器?

衡高寒
2023-03-14

我正在SWT制作一个组件,它可以监听其他组件中的事件。但是,当该组件被释放时,它仍然注册为侦听器。我想知道当这个组件被释放时,如何自动删除这个监听器。

我的意思是:

public myDialog implements SelectionListener, ModifyListener {
     public Button myButton = new Button();

     public myDialog(){//constructor
             anotherPage.someButton.addSelectionListner(this);
             myButton.addSelectionListner(this);
     }

     public void widgetSelected(SelectionEvent e){
          if(e.getSource()==anotherPage.someButton){
               //do something
          }
          else if(e.getSource()==myButton){
               //do something else
          }
     }
}

    public anotherPage extends AbstractSystemWizardPage{
        public Button someButton=new Button();
        //...
    }

< code>myDialog同时侦听它自己的按钮和< code>anotherPage中的按钮。如果用户决定释放< code>myDialog(关闭对话框),但它仍然侦听< code>someButton,这是没有意义的。如何在处置时删除它?

共有1个答案

瞿和硕
2023-03-14

您有一个dispose()API,用于对话框。覆盖它,并删除其中的侦听器。

比如说

@Override
public void dispose()
{
    anotherPage.someButton.removeSelectionListener(this);

    super.dispose();
}

 类似资料:
  • 问题内容: 一个典型的Redis聊天示例将如下所示(仅举一个这样的示例,请参见https://github.com/emrahayanoglu/Socket.io- Redis-RealTime-Chat- Example/blob/master/chatServer.js ): 但是,这里的问题是,当“断开连接”时,侦听器仍然处于连接状态。控制台将继续打印出。如果要检查的事件列表,他们仍然会发现

  • 问题内容: 我有一个按钮,并添加了一些按钮: 我可以通过以下方式删除它们: 如果我想一次删除所有侦听器,或者没有函数引用()怎么办?有没有办法做到这一点,或者我必须一个一个地删除它们? 问题答案: 我认为最快的方法是克隆节点,这将删除所有事件侦听器: 请注意,因为这也会清除所涉及节点的所有子元素上的事件侦听器,因此,如果要保留该侦听器,则必须一次显式删除一个侦听器。

  • 我有两个屏幕..首先是闪屏,在这里我借助firebase.auth()检查用户是否已经存在。onAuthStateChanged侦听器。如果用户为空,它将转到另一个firebase.auth()的登录屏幕。onAuthStateChanged侦听器用于在电话验证后获取用户,如果用户之前未注册,则将用户移至UserDetails屏幕以获取更多用户信息,或者移至主屏幕..同样的检查也在闪屏上进行,以确

  • 我有一个表,其中有多个表项可用。其中,对于某些表项,设置了背景和前景色。 在选择彩色项目时,由于文本颜色为白色,文本很难阅读,因此,我需要将前面的颜色更改为默认颜色,即黑色。我是用选择侦听器完成的 成功地改变了颜色。 但是现在我正在选择任何其他没有着色的项目,所以我想删除上面的选择侦听器并将文本颜色设置为彩色即白色。我不知道如何使用。 有人能帮忙吗?

  • 这是我的产品展示功能。当我从另一个活动访问这个活动时,另一个活动可能因为内存泄漏而被破坏。如何解决此问题?如何关闭监听器?我想销毁这是OnDestroy方法,因为它可能会导致内存泄漏,而且我已经读到这样做是一个很好的实践。

  • 你好,有一种方式鼠标,甚至可以举行鼠标和释放,因为我不能找到它在谷歌。 例如这张图片… 当为时,单击该按钮,他会看到······然后,在他释放鼠标单击后,将再次返回