package javacodebook.gui.dialog; import java.awt.*; import java.awt.event.*; /** * Der Dialog erscheint wenn versucht wird, über den Schließen-Button vom Fenster * die Anwendung zu beenden. * Da der Dialog modal ist, ist der Frame gesperrt solange der Dialog erscheint. */ public class DialogFrame extends Frame { private Dialog dialog = null; private Label dLabel = new Label("Wollen Sie wirklich die Anwendung beenden?"); private Button yesButton = new Button("Ja"); private Button noButton = new Button("Nein"); private Button cancelButton = new Button("Abbrechen"); /** * Konstruktor von DialogFrame. */ public DialogFrame(String title) { super(title); //Dialog wird gebaut this.buildDialog(); // Beim Klicken des Schließen-Buttons vom HauptFenster // wird der Dialog aufgerufen! this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { dialog.setVisible(true); } }); } /** * Hier wird der Dialog gebaut, und sämtliche ActionListener werden * an den Buttons registriert */ private void buildDialog() { dialog = new Dialog(this, "Dialog", false); dialog.setLayout(new FlowLayout()); dialog.add(dLabel); dialog.add(yesButton); dialog.add(noButton); dialog.add(cancelButton); dialog.setSize(280,100); // Wird "Yes" geklickt, wird das Programm beendet yesButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { System.exit(0); } }); // Wird "No" geklickt verschwindet der Dilaog, und das Frame ist wieder // focusierbar. noButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { dialog.dispose(); } }); // Wird "Abbrechen" geklickt verschwindet der Dilaog auch, und das Frame // ist wieder focusierbar. cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { dialog.dispose(); } }); } }