

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class CentralizeFrameTest extends Applet {

  private Button showFrameButton;
  private CentralizedFrame f;

  public void init () {
    Dimension screenSize = Toolkit.getDefaultToolkit ().getScreenSize ();
    showFrameButton = new Button ("Show Frame");
    f = new CentralizedFrame (screenSize);
    f.setSize (320, 240);
    add (showFrameButton);
    showFrameButton.addActionListener (new ActionListener () {
      public void actionPerformed (ActionEvent e) {
        f.setVisible (true);
      }
    });
  }

  public void destroy () {
    if (f.isShowing ()) {
      f.setVisible (false);
    }
    f.dispose ();
    f = null;
  }
}

class CentralizedFrame extends Frame {
  public CentralizedFrame (Dimension screenSize) {
    super ("Centralized Frame");
    addWindowListener (new WindowAdapter () {
      public void windowClosing (WindowEvent e) {
        CentralizedFrame.this.setVisible (false);
      }
    });

    this.screenSize = screenSize;
  }
  public void setVisible (boolean visible) {
    if (visible) {
      Dimension mySize = getSize ();
      setBounds (
        (screenSize.width - mySize.width) / 2,
        (screenSize.height - mySize.height) / 2,
        mySize.width,
        mySize.height
      );
    }
    super.setVisible (visible);
  }
  private Dimension screenSize;
}
