0

我是 eclipse 开发的新手,在学习 SWT 时,我知道我需要处理display下面的片段:

while (!shell.isDisposed ()) {
    if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();

因此它会处理所有显示获取的操作系统资源。我的问题是我应该在 Eclipse 插件中做同样的事情吗?考虑我们有这样的createPartControl()代码:

public void createPartControl(Composite parent) {
      //Other codes
      parent.dispose(); //Shoud I compulsory do this in eclipse plugin?
}

或者eclipse会自动处理资源吗?我的假设是我应该手动处理。如果我错了,你能纠正我吗?

4

1 回答 1

1

parent.dispose()是错误的做法。您应该清理在合成中创建的资源。不要处置父对象,因为它不是由您的视图/合成创建的。

监听 Widget 上的 dispose 事件并进行必要的清理。假设您在视图中创建了颜色、字体、图像等资源,并且您不想重复使用它们,请在合成上监听 dipose 事件并处理它们。

yourComposite.addListener(SWT.dispose, new Listener(){

    public void handleEvent(Event e){
            image.dispose(); 
            font.dipose();  
            color.dipose()

    }

});
于 2013-03-21T15:42:03.740 回答