【发布时间】:2015-09-30 13:51:39
【问题描述】:
我通过在 e4 应用程序中扩展 Composite 类创建了自己的复合复合材料。
然后我重写了 dispose 方法,但它永远不会被调用。但是,如果我在我的复合组合上添加一个 dispose 侦听器,或者它包含侦听器的任何小部件都会被调用。
有人能解释一下我的原因吗?
这是一个例子。
public class MyComposite extends Composite{
public MyComposite(){
this.addDisposeListener(new DisposeListener(){
@Override
public void widgetDisposed(DisposeEvent e) {
System.out.println("This get printed");
}
});
}
@Override
public void dispose(){
System.out.println("This is not printed");
super.dispose();
}
}
我已经阅读了 dispose 方法的 javadoc,它说:
注意:此方法不会在接收者的后代上递归调用。这意味着,小部件实现者无法通过重新实现此方法来检测小部件何时被释放,而是应该监听 Dispose 事件。
对于我看到的行为和上面的 javadoc,似乎 dispose 方法不能被覆盖,因为它被忽略了。这种解释正确吗?
【问题讨论】:
标签: swt eclipse-rcp rcp