java - 如何在处置时删除 Eclipse Widget 中的监听器?

标签 java eclipse swt

我正在 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();
        //...
    }

myDialog 监听其自己的按钮和 anotherPage 中的按钮。如果用户决定处置myDialog(关闭对话框),但它仍然监听someButton,那么这是没有意义的。处置时如何将其删除?

最佳答案

您有一个用于Dialog(或Wizard,等等)的dispose() API。覆盖它,并删除其中的监听器。

例如

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

    super.dispose();
}

关于java - 如何在处置时删除 Eclipse Widget 中的监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276616/

相关文章:

java - Jsp页面以Https和Http方式打开

java - 我应该处理从 EditorSupport 返回的 jface CellEditors

java - SWT 应用程序中的复合 - Window Builder

java - EL 如何在不知道对象类的情况下使用对象的方法和字段

Java解析器重命名变量

java - 当从 Start 方法调用 System.Exit 时,JavaFX8 中出现奇怪的异常

java - 清除 Eclipse 中突出显示的覆盖范围

21.0.1 android sdk 上的 Android 预编译器错误

java - 当选择所有表格元素时,ColumnHideCommand 使表格列在 NatTable 中消失

java - 如何通过java从任意邮件id发送邮件?