0

ウィンドウを閉じた後、クラスのオブジェクトを作成してタスクを実行したいと思います。終了後:

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

ウィンドウが閉じられるとすぐに新しい操作を開始できるようにするにはどうすればよいですか?助けてください。

4

3 に答える 3

2

ユーザーが を閉じようとするとJFrame、次のイベントが発生します。

  • そのフレームに登録されているのwindowClosingメソッドWindowListenerが呼び出されます。
  • 次に、によって指定されたアクションsetDefaultCloseOperationがトリガーされます。

デフォルトのクローズ操作は 4 つあります。

閉じるときに何もしない

...まったく何もしません。フレームはまだここにあり、閉じるようにというあなたの要求を喜んで無視しています。

閉じると非表示

setVisible(false)フレームを呼び出すのと同じ効果。フレームは非表示になり、 を呼び出すことで再び表示できますsetVisible(true)

クローズ時に処分

dispose()フレームを呼び出すのと同じ効果。この効果は HIDE_ON_CLOSE と多少似ていますが、今回はフレームが使用していた OS リソースが解放される点が異なります。setVisible(true)フレームを再度表示させたい場合は、再度呼び出すことができます。

そのフレームに登録されている のwindowClosedメソッドWindowListenerが呼び出されます。

また、最後の表示可能なウィンドウが破棄されると、プログラムが終了する可能性があることに注意してください。

終了時に終了

を呼び出すのと同じ効果System.exit()


したがって、ユーザーがフレームを閉じようとしたときに何が起こるかを完全に制御したい場合は、デフォルトの操作を DO_NOTHING_ON_CLOSE に設定し、コードwindowClosingWindowListener. そこでは、達成したいことに応じて、setVisible(false)、dispose()、または System.exit() を呼び出すことができます。

また、閉じるときに非表示、破棄、または終了するようにデフォルトの操作を設定し、コードwindowClosingWindowListener. この場合、リスナーが最初に呼び出され、次に選択されたアクションが実行されます。

最後に、デフォルトの操作を DISPOSE_ON_CLOSE に設定し、コードwindowClosedWindowListener. このようにして、フレームが最初に破棄され (画面から消えます)、次にコードが実行されます。

于 2012-11-26T15:10:20.910 に答える
1
After i close my window,i want to create an object of a class and preform a task.

見る

  • HIDE_ON_CLOSEsimplair as setVisible(false);、コンテナは再利用可能、呼び出すことで表示可能setVisible(true);

  • または、 を呼び出すことができますdispose()。つまり、このコンテナーは再利用可能ではないため、isDisplayable()呼び出す前にを確認する必要があります。setVisible(true);

クラスのオブジェクトを作成してタスクを実行したい

  • SystemTrayを参照してください。おそらく適切な方法である可能性があります
于 2012-11-26T14:03:33.937 に答える