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)
Zur Navigation springenZur Suche springen

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>