X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fthreedee%2FJava3DWindow.java;h=8d1a476c35e35bc4b7fd67e34d5ff1304a38eff8;hp=b6a017ae05e90606381cff9cc80385ab3ade0301;hb=52bf9e8686c916be37a26a0b75340393d4478b05;hpb=ca9bdb3916f9c39adbbf95d06ac95c21dafbb4e6 diff --git a/tim/prune/threedee/Java3DWindow.java b/tim/prune/threedee/Java3DWindow.java index b6a017a..8d1a476 100644 --- a/tim/prune/threedee/Java3DWindow.java +++ b/tim/prune/threedee/Java3DWindow.java @@ -7,6 +7,8 @@ import java.awt.GraphicsConfiguration; import java.awt.GraphicsEnvironment; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.awt.geom.GeneralPath; import javax.media.j3d.AmbientLight; @@ -207,11 +209,19 @@ public class Java3DWindow implements ThreeDWindow _frame.dispose(); _frame = null; _orbit = null; - }}); + } + }); panel.add(closeButton); _frame.getContentPane().add(panel, BorderLayout.SOUTH); _frame.setSize(500, 350); _frame.pack(); + // Add a listener to clean up when window closed + _frame.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) + { + dispose(); + } + }); // show frame _frame.show(); @@ -221,6 +231,16 @@ public class Java3DWindow implements ThreeDWindow } } + /** + * Dispose of the frame and its resources + */ + public void dispose() + { + if (_frame != null) { + _frame.dispose(); + _frame = null; + } + } /** * Create the whole scenery from the given track