/* DialogBeispiel.java */

import java.awt.*;
import java.awt.event.*;

class MyDialog
extends Dialog
implements ActionListener
{
  public MyDialog(Frame parent)
  {
    super(parent,"MyDialog",true);
    Point parloc = parent.getLocation();
    setBounds(parloc.x + 30, parloc.y + 30,400,300);
    setBackground(Color.lightGray);
    setLayout(new BorderLayout());
    //Panel
    Panel panel = new Panel();
    customizeLayout(panel);
    add(panel, BorderLayout.CENTER);
    //Ende-Button
    Button button = new Button("Ende");
    button.addActionListener(this);
    add(button, BorderLayout.SOUTH);
    //Window-Listener
    addWindowListener(
      new WindowAdapter() {
        public void windowClosing(WindowEvent event)
        {
          endDialog();
        }
      }
    );
    pack();
  }

  private void customizeLayout(Panel panel)
  {
    //Beispielcode hier
  }

  public void actionPerformed(ActionEvent event)
  {
    if (event.getActionCommand().equals("Ende")) {
      endDialog();
    }
  }

  void endDialog()
  {
    setVisible(false);
    dispose();
    ((Window)getParent()).toFront();
    getParent().requestFocus();
  }
}

public class DialogBeispiel
extends Frame
implements ActionListener
{
  public static void main(String[] args)
  {
    DialogBeispiel wnd = new DialogBeispiel();
    wnd.setSize(300,200);
    wnd.setVisible(true);
  }

  public DialogBeispiel()
  {
    super("Beispiel Dialogelemente");
    setBackground(Color.lightGray);
    setLayout(new FlowLayout());
    //Dialog-Button
    Button button = new Button("Dialog");
    button.addActionListener(this);
    add(button);
    //Ende-Button
    button = new Button("Ende");
    button.addActionListener(this);
    add(button);
    //Window-Listener
    addWindowListener(new WindowClosingAdapter(true));
  }

  public void actionPerformed(ActionEvent event)
  {
    String cmd = event.getActionCommand();
    if (cmd.equals("Dialog")) {
      MyDialog dlg = new MyDialog(this);
      dlg.setVisible(true);
    } else if (cmd.equals("Ende")) {
      setVisible(false);
      dispose();
      System.exit(0);
    }
  }
}