Bestätigung vor Programmende (Java)

Aus Byte-Welt Wiki
Version vom 6. Januar 2008, 10:19 Uhr von L-ectron-X (Diskussion | Beiträge) (Abfragedialog vor Beenden eines Programms)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Häufig kommt es vor, dass man vor Beenden eines Programmes noch Aktionen durchführen möchte. Zum Teil werden dazu Bestätigungen des Benutzers benötigt, die man sich noch vor Programmende einholen kann.

<code=java> import java.awt.*; import java.awt.event.*; import javax.swing.*;

public class WindowClosingDemo extends JFrame {

  //Konstruktor
  public WindowClosingDemo(String title) { 
     super(title); 
     Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
     setSize((int)dim.width*60/100, (int)dim.height*60/100); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); //Abschalten der Standard-Verhaltens für das Schließen des Fensters 
     
     //Neues Verhalten für das Schließen des Fensters
     addWindowListener(new WindowAdapter() { 
        public void windowClosing(WindowEvent e) { 
           exit(); 
        } 
     }); 
     
     JMenuBar menuBar = new JMenuBar(); 
     
     JMenu fileMenu = new JMenu("Datei"); 
     JMenuItem exitItem = new JMenuItem("Beenden"); 
     exitItem.addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 
           exit(); 
        } 
     }); 
     fileMenu.add(exitItem); 
     menuBar.add(fileMenu); 
     
     setJMenuBar(menuBar); 
  } 
   
  //Methode zur Anzeige eines Bestätigungsdialoges
  private void exit() { 
     int result = JOptionPane.showConfirmDialog(null, 
     "Möchten Sie das Programm beenden?", 
     "Programm beenden", 
     JOptionPane.YES_NO_CANCEL_OPTION); 
     switch(result) { 
        case JOptionPane.YES_OPTION: 
        System.exit(0); //Aktion(en) bei Klicken auf den "Ja-Button"
        case JOptionPane.NO_OPTION: 
        //vielleicht ist hier was zu tun, z.B. Datenbank Rollback etc.
     } 
  } 
  //Einstiegspunkt in die Applikation
  public static void main(String[] args) { 
     new WindowClosingDemo("WindowClosingDemo").setVisible(true); 
  } 

} </code=java>