我是eclipse开发的新手,在学习SWT时,我开始知道我需要使用下面的片段处理display
:
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
因此它处理了显示器获取的所有OS资源。我的问题是我应该在Eclipse插件中做同样的事情吗?考虑一下我们有createPartControl()
代码:
public void createPartControl(Composite parent) {
//Other codes
parent.dispose(); //Shoud I compulsory do this in eclipse plugin?
}
或者eclipse会自动处理资源吗?我的假设是我应该手动处理。如果我错了,你能帮我纠正吗?
答案 0 :(得分:1)
parent.dispose()
是错误的做法。您应该清理在复合中创建的资源。不要处置父级,因为它不是由视图/复合创建的。
在Widget上侦听dispose事件并进行必要的清理。假设您在视图中创建了颜色,字体,图像......等资源,并且您不想重复使用它们,请在复合材料上监听dipose事件并将它们浸入其中。
yourComposite.addListener(SWT.dispose, new Listener(){
public void handleEvent(Event e){
image.dispose();
font.dipose();
color.dipose()
}
});