2016-04-07 12 views
0

詳細: シャットダウンに時間がかかるJAVAアプリケーションがあります。ポートを閉じるための呼び出しがありますが、実際には時間がかかります。私は、アプリケーションがシャットダウンしていることをユーザーに示すダイアログボックスを追加したいと思います。通常、私はダイアログボックスを作成し、長い作業を行い、ダイアログを閉じるためにスレッドを開始し、ダイアログを表示します。作業が完了すると、ダイアログが閉じます。これは、ウィンドウリスナーがすべてのウィンドウを閉じるように見えるため、アプリケーションをシャットダウンするためには機能しません。私はこれを回避する方法がわからない。JAVA GUI閉じるアプリケーションダイアログ

コード:デーモンスレッドとして

public void windowClosing(WindowEvent we) 
{ 
    shutDown(); 
} 

public void shutdown() 
{ 
    final JDialog dialog = createDialog(); 
    Thread t = new Thread 
    { 
     public void run() 
     { 
     saveProperties(); 
     ClosePort(); 
     dialog.setVisible(false); 
     System.exit(0);   
     } 
    }; 
    t.start(); 
    dialog.setVisible(true); 
} 
+0

それでは、ダイアログは表示されません。 – Mordechai

+0

[*]プログラム終了の場合にポートを閉じるにはどうすればいいですか?*](http://stackoverflow.com/q/767292/230513) – trashgod

+0

ダイアログが表示されますが、ウィンドウリスナーが完了するとすぐに消えます – user2899525

答えて

1
t.setDaemon(true); 

は、残りの部分がなくなっている場合でも、生き続けます。

+0

スレッドはまだ実行されますが、GUIは消去されます。ユーザーはアプリケーションが完了したと考えますが、バックグラウンドで実行中です。元のアプリケーションが終了する前に別のアプリケーションを開くと、問題が発生します。 – user2899525

+0

@ user2899525有効なポイントです。たとえば、アプリケーションを終了してからシステムをシャットダウンするとします。たぶん節約を早くするべきでしょう。 –

関連する問題