Bestätigung vor Programmende (Java): Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
K
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 6: Zeile 6:
 
Um die gewünschte Funktion möglichst einfach, übersichtlich und wiederverwendbar zu halten, schreiben wir uns zunächst eine private [[Methode]], die die Funktionalität bereit stellt.
 
Um die gewünschte Funktion möglichst einfach, übersichtlich und wiederverwendbar zu halten, schreiben wir uns zunächst eine private [[Methode]], die die Funktionalität bereit stellt.
 
Auf diese Art und Weise können wir die Methode unabhängig vom [[Listener]] verwenden.
 
Auf diese Art und Weise können wir die Methode unabhängig vom [[Listener]] verwenden.
<code=java>
+
<syntaxhighlight lang="java">
 
   //Methode zur Anzeige eines Bestätigungsdialoges
 
   //Methode zur Anzeige eines Bestätigungsdialoges
 
   private void exit() {  
 
   private void exit() {  
Zeile 19: Zeile 19:
 
       }  
 
       }  
 
   }
 
   }
</code=java>
+
</syntaxhighlight>
 
Für die Bestätigung der Aktion vor Programmende benutzen wir eine {{JAPI|JOptionPane}}-Instanz, die einen einfachen Dialog präsentiert.
 
Für die Bestätigung der Aktion vor Programmende benutzen wir eine {{JAPI|JOptionPane}}-Instanz, die einen einfachen Dialog präsentiert.
 
Den Rückgabewert der Benutzeraktion in Form eines [[Datentyp#Primitive_Datentypen|int]]-Wertes werten wir in einer [[Switch-case-Anweisung]] aus.
 
Den Rückgabewert der Benutzeraktion in Form eines [[Datentyp#Primitive_Datentypen|int]]-Wertes werten wir in einer [[Switch-case-Anweisung]] aus.
Zeile 26: Zeile 26:
  
 
Ein fertiges Beispiel demonstriert die Verwendung für Menüs und Buttons ({{JAPI|ActionListener}}) und Fenster-Komponenten ({{JAPI|WindowListener}}).
 
Ein fertiges Beispiel demonstriert die Verwendung für Menüs und Buttons ({{JAPI|ActionListener}}) und Fenster-Komponenten ({{JAPI|WindowListener}}).
<code=java>
+
<syntaxhighlight lang="java">
 
import java.awt.*;  
 
import java.awt.*;  
 
import java.awt.event.*;  
 
import java.awt.event.*;  
Zeile 91: Zeile 91:
 
   }  
 
   }  
 
}
 
}
</code=java>
+
</syntaxhighlight>
  
  
[[Kategorie:Java]]
+
[[Kategorie:Java-Codeschnipsel]]
 
[[Kategorie:Tutorials (Java)]]
 
[[Kategorie:Tutorials (Java)]]
 
[[Kategorie:Swing]]
 
[[Kategorie:Swing]]

Aktuelle Version vom 28. März 2018, 08:30 Uhr

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


An einem kleinen Beispiel soll nun eine mögliche Lösung vorgestellt werden.

Um die gewünschte Funktion möglichst einfach, übersichtlich und wiederverwendbar zu halten, schreiben wir uns zunächst eine private Methode, die die Funktionalität bereit stellt. Auf diese Art und Weise können wir die Methode unabhängig vom Listener verwenden.

   //Methode zur Anzeige eines Bestätigungsdialoges
   private void exit() { 
      int result = JOptionPane.showConfirmDialog(null, 
      "Möchten Sie das Programm jetzt beenden?", 
      "Beenden bestätigen", 
      JOptionPane.YES_NO_OPTION); 

      switch(result) { 
         case JOptionPane.YES_OPTION: 
         System.exit(0); //Aktion(en) bei Klicken auf den "Ja-Button"
      } 
   }

Für die Bestätigung der Aktion vor Programmende benutzen wir eine JOptionPane-Instanz, die einen einfachen Dialog präsentiert. Den Rückgabewert der Benutzeraktion in Form eines int-Wertes werten wir in einer Switch-case-Anweisung aus.


Ein fertiges Beispiel demonstriert die Verwendung für Menüs und Buttons (ActionListener) und Fenster-Komponenten (WindowListener).

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

/**
 * WindowClosingDemo stellt einen JFrame bereit, dessen Beendigung per Nachfrage quittiert wird.
 * @author Gernot Segieth
 */
public class WindowClosingDemo { 
   //Konstruktor
   public WindowClosingDemo(String title) { 
      JFrame frame = new JFrame(title); 
      Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
      frame.setSize((int)dim.width*60/100, (int)dim.height*60/100); 
      frame.setLocationRelativeTo(null); 
      frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); //Abschalten des Standard-Verhaltens für das Schließen des Fensters 
      
      //Neues Verhalten für das Schließen des Fensters
      frame.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); 
      
      frame.setJMenuBar(menuBar); 
      frame.setVisible(true);
   } 
    
   //Methode zur Anzeige eines Bestätigungsdialoges
   private void exit() { 
      int result = JOptionPane.showConfirmDialog(null, 
      "Möchten Sie das Programm jetzt beenden?", 
      "Beenden bestätigen", 
      JOptionPane.YES_NO_OPTION); 

      switch(result) { 
         case JOptionPane.YES_OPTION: 
         System.exit(0); //Aktion(en) bei Klicken auf den "Ja-Button"
      } 
   } 

   //Einstiegspunkt in die Applikation
   public static void main(String[] args) { 
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            WindowClosingDemo wcd = new WindowClosingDemo("WindowClosingDemo");
         }
      });
       
   } 
}