2016-03-19 17 views
2

Netbeansでは、windowClosingEventをカスタマイズしてもプログラムが終了しません。NetBeansでwindowClosingイベントをカスタマイズした後でJavaプログラムを終了できない

データベース接続の終了指示をwindowClosingEventメソッドに追加して、データベース切断ボタンをクリックせずにウィンドウを閉じるとデータベース接続が切断されることを確認します。

次に、 "system.exit(0);"を手動で追加します。 Netbeansによって生成されたclosingEventメソッド内。これで私のプログラムは終わることができます。しかし、明示的にプログラムをオフにしなくても、windowClosingイベントを追加すると、なぜそれが完了できないのかわかりません。

答えて

1

あなたがWindowListenerインターフェイスまたはWindowAdapter、あなたが彼らのwindowCloseing(e)方法で元の実装を見てを使用している場合、あなたは彼らが実装にしなかった実現しますウィンドウを閉じるときに何をすべきかを明示的に伝える必要があります。それを上書きしない場合、何も起こりません。ウィンドウを閉じるときにプログラムを終了する以外に特別なことがなければ、通常はオーバーライドされたwindowClosing()メソッドにと書きます。

例:あなたのケースのために

frame.addWindowListener(new WindowAdapter() { 
    @Override 
    public void windowClosing(WindowEvent e) { 
     System.exit(0); 
    } 
}); 

は、代わりにちょうどSystem.exit(0)を書くのは、データベース接続がすでに閉じられているかどうかをチェックすることもできます。

@Override 
public void windowClosing(WindowEvent e) { 
    //Check if database connection is closed 
    //Close DB connection if open 
    System.exit(0); 
} 
+0

を@ Eric_Lyn私の解決策を見てみましょう。 – user3437460

+1

ありがとうございます!それは私をたくさん助けます! –

1

ウィンドウを閉じるとは、プログラムを終了する必要がないためです。あなたは明示的に行うか、ウィンドウを閉じるときにプログラムを終了するようにウィンドウを構成することができます。 frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);したがって

//Invoked when a window is in the process of being closed. The close  
//operation can be overridden at this point. 

public void windowClosing(WindowEvent e) {} 

使用:

関連する問題