2012-05-06 5 views
14

Ich frage mich, ob es einen Weg gibt, indem Sie auf das "X" klicken, damit das Programm Code vor dem Schließen des JFrame ausführen kann. Die setDefaultCloseOperation() Methode verwendet nur eine ganze Zahl.JFrame On Close Operation

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

Antwort

11

Möglicherweise möchten Sie ein verwenden. Die WindowListener tutorial.

+0

Vielen Dank. Das ist genau was ich danach habe. –

+2

Oder Sie können [WindowAdapter] (http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/WindowAdapter.html) als Annehmlichkeit zum Erstellen von Listener-Objekten verwenden. –

15

@ Jeffrey hat eine gute Antwort, aber Sie sollten darüber nachdenken, was Sie versuchen zu tun. Wenn Sie wirklich etwas beim Schließen eines Frames machen wollen, dann ist ein WindowListener der richtige Weg. Wenn Sie jedoch nach einem Ort suchen, an dem Sie ein paar Säuberungsaktionen durchführen und die App ordnungsgemäß herunterfahren können, dann möchten Sie wahrscheinlich stattdessen eine shutdown hook. Wenn Sie einen WindowListener verwenden, wird der Code nur vom Benutzer ausgelöst, indem Sie auf das X klicken. Was aber, wenn der Nutzer die App im Vordergrund eines Terminals startet und mit Strg + C abstürzt? Was passiert, wenn der Benutzer den Prozess über die Befehlszeile oder einen Task-Manager beendet?

+2

bearbeitet, um den neuesten Javadoc zu zeigen :-) +1 btw – COD3BOY

+0

Wow, danke für Ihre Antwort. Ich verwende dies, um einige Daten beim Schließen des Rahmens zu speichern. –

+0

@Sanjay: Ich entschied mich, jdk6 zu verknüpfen, weil 1) nach meiner Erfahrung mehr Leute immer noch 6 als 7 verwenden, und 2) Runtime.addShutdownHook() änderte keinen Lecken zwischen 6 und 7. –

14
this.addWindowListener(new WindowAdapter(){ 
       public void windowClosing(WindowEvent e){ 
        int i=JOptionPane.showConfirmDialog(null, "Seguro que quiere salir?"); 
        if(i==0) 
         System.exit(0);//cierra aplicacion 
       } 
      });