我們知道,在SWT中,有兩條關于Dispose的法則:
1。如果你創建了它,那么就dispose它。你應當釋放那些使用構造器創建了的SWT對象。
2。dispose一個父組件會dispose掉所有的子組件。
由 此可以得知,由于Color,Cursor,Font,GC,Image,Printer,Region都是在DeviceData之上創建,所以如果使 用構造器的話,就必須要手工把這些資源dispose掉,而如果使用Font font = control.getFont ()這樣的方式的話,就不可以調用font.dispose()方法,因為它不是被我們創建的。
還可以得知,因為Widget及其所有子類的構造器都需要一個父Widget作參數(常用的也就是Shell或者Composite),所以是不是得到這樣的結論:
在RCP應用中,當程序關閉時,Display會被Dispose,那么最頂層的Shell也會被dispose,于是遞歸下來,所有的Widget也會被 dispose了?所以只需要對自己使用構造器創建的Color,Cursor,Font,GC,Image,Printer,Region調用 Dispose方法就可以了.
還有就是,項目中肯定要用到不計其數的image的,并且圖片會被重復使用,如此,最好用SWT提供的org.eclipse.jface.resource.ImageRegistry來管理.