From 311aeb50a8ad4c2c23b5f0ebe7871fdf10303e98 Mon Sep 17 00:00:00 2001 From: kcr Date: Mon, 1 Nov 2004 23:06:19 +0000 Subject: 1) Add "Free OffScreen Buffer" menu item to free the off-screen buffer (by calling setOffScreenBuffer(null)). 2) Free snapshot image resources when scrollable ImageDisplayer window is closed. 3) Free scene graph and off-screen buffer information when application exits --- src/PrintCanvas3D/ImageDisplayer.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/PrintCanvas3D/ImageDisplayer.java') diff --git a/src/PrintCanvas3D/ImageDisplayer.java b/src/PrintCanvas3D/ImageDisplayer.java index 4666bf2..30f498e 100644 --- a/src/PrintCanvas3D/ImageDisplayer.java +++ b/src/PrintCanvas3D/ImageDisplayer.java @@ -70,6 +70,12 @@ class ImageDisplayer extends JFrame implements ActionListener { private JMenuItem printItem; private JMenuItem closeItem; + private void freeResources() { + this.removeAll(); + this.setVisible(false); + bImage = null; + } + public void actionPerformed (ActionEvent event) { Object target = event.getSource(); @@ -77,9 +83,7 @@ class ImageDisplayer extends JFrame implements ActionListener { new ImagePrinter(bImage).print(); } else if (target == closeItem) { - this.removeAll(); - this.setVisible(false); - bImage = null; + freeResources(); } } @@ -109,6 +113,13 @@ class ImageDisplayer extends JFrame implements ActionListener { JScrollPane scrollPane = new JScrollPane(imagePanel); scrollPane.getViewport().setPreferredSize(new Dimension(700, 700)); + // Handle the close event + this.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent winEvent) { + freeResources(); + } + }); + // Add scroll pane to the frame and make it visible this.getContentPane().add(scrollPane); this.pack(); -- cgit v1.2.3