import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JFrame; public class SwingGoodbyeWorld extends JApplet { public static void main ( String[] args ) { SwingGoodbyeWorld app = new SwingGoodbyeWorld (); JFrame frame = new JFrame ( "SwingGoodbyeWorld" ); frame.setSize ( 150, 150 ); frame.getContentPane().add ( app ); frame.show (); app.m_applet = false; app.init (); WindowAdapter windowCloser = new WindowAdapter () { public void windowClosing ( WindowEvent wevt ) { System.exit ( 0 ); } }; frame.addWindowListener ( windowCloser ); } public void init () { super.init (); JButton btn = new JButton ( "Goodbye World!" ); getContentPane().add ( btn ); ActionListener quiter = new ActionListener () { public void actionPerformed ( ActionEvent aevt ) { if ( m_applet ) { // cannot really destory the applet so make its button go away removeAll (); // why doesn't removeAll force a refresh ???? } else System.exit ( 0 ); } }; btn.addActionListener ( quiter ); } private boolean m_applet = true; }