2012-05-06 4 views
14

"X"をクリックすると、JFrameを閉じる前にプログラムがいくつかのコードを実行できるようにする方法があるのだろうかと思っていました。 setDefaultCloseOperation()メソッドは整数だけをとります。クローズ操作時のJFrame

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

答えて

11

WindowListenerを使用してください。 WindowListener tutorial

+0

ありがとうございます。それだけのことですね。 –

+2

または、[WindowAdapter](http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/WindowAdapter.html)をリスナー・オブジェクトを作成するための便宜として使用できます。 –

15

@Jeffreyは良い答えがありますが、あなたがしようとしていることを考慮する必要があります。フレームの終了時に本当に何かをしたい場合は、WindowListenerを使用してください。ただし、クリーンアップと正常なシャットダウンを行う場所を探している場合は、おそらくshutdown hookが必要です。あなたが言ったように、WindowListenerを使うと、コードは "Xをクリックする"ユーザによってのみトリガされます。しかし、ユーザーが端末の前景でアプリを起動し、Ctrl + Cでそのアプリを終了させるとどうなりますか?ユーザーがコマンドラインまたはタスクマネージャからプロセスを強制終了した場合はどうなりますか?

+2

最新のjavadocを指し示すように編集:-) +1 btw – COD3BOY

+0

うわー、ありがとう、あなたに返信してください。私はフレームを閉じると、いくつかのデータを保存するためにこれを使用しています。 –

+0

@Sanjay:私はjdk6をリンクしました。なぜなら、1)私の経験上、7人以上の人が6人を使っている人が多いからです.2)Runtime.addShutdownHook()は、6と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 
       } 
      }); 
関連する問題