import javax.swing.JFrame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class MyFrame extends JFrame { public MyFrame () { MyWindowListener aWindowListener = new MyWindowListener(); this.addWindowListener(aWindowListener); } // Inner class defined within the MyFrame class. // Private because it's only used by the MyFrame class. private class MyWindowListener extends WindowAdapter { public void windowClosing (WindowEvent e) { JFrame aFrame = (JFrame) e.getWindow(); aFrame.setTitle("Closing window..."); delay(); aFrame.setVisible(false); aFrame.dispose(); } } private void delay() { try { Thread.sleep(3000); } catch (InterruptedException ex) { System.out.println("Pausing of program was" & "unsuccesful and interrupted"); } } }