SWT: dispose() hier nötig?

Status
Nicht offen für weitere Antworten.

byte

Top Contributor
Hallo,

folgendes: Bei einem Doppelklick auf ein Element eines Trees lasse ich gewisse Details in einem TabFolder anzeigen. Das klappt auch problemlos. Ich setze in diesem Fall den Inhalt des TabItems neu:

Code:
tab.setControl(DetailProvider.getInstance().getDetails(tabFolder, o));

DetailProvider#getDetails() liefert an dieser Stelle ein neues Composite, dass ich dem Tab zuweise.

Nach meinem Verständnis muss ich nun doch das alte Composite disposen oder ist das nicht nötig?

Code:
tab.getControl().dispose();
... liefert eine Exception:

Code:
java.lang.NullPointerException
	at de.tubs.jlsc.gui.MainWindow$4.handleEvent(MainWindow.java:213)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3125)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2758)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:809)
	at org.eclipse.jface.window.Window.open(Window.java:787)
	at de.tubs.jlsc.gui.MainWindow.run(MainWindow.java:402)
	at de.tubs.jlsc.gui.MainWindow.main(MainWindow.java:407)


Wenn ich nix dispose, läuft das ganze natürlich zufriedenstellend, aber das wäre doch recht unsauber. Oder wird bei setControl() implizit dispose() aufgerufen? Ich bin mir da unsicher...

MFG byto
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben