古いアプレットのバグ修正を行っていますdestroy()
が、確認ダイアログが開いている間にアプレットが呼び出されるという問題が発生しています ( JOptionPane.showConfirmDialog
)。基本的に、開いているダイアログ ボックスがあり、ブラウザ ウィンドウが閉じられている場合、ダイアログ ボックスは開いたままになり、アプレットはバックグラウンドで (ブラウザ ウィンドウではなく) 実行され続けます。すべてのダイアログ ボックスを閉じて、ブラウザ ウィンドウを閉じたときにすべてのアプレットが確実に破棄されるようにする方法はありますか?
編集:わかりました、明確にするために、この確認ダイアログは、アプレットが開始するスレッドで開かれています。ただし、それを開始したアプレットのインスタンスがあり、確認ダイアログが開始されてJOptionPane.showConfirmDialog(applet_instance, ...)
います。これは、ダイアログが起動している間、ユーザーがブラウザーにアクセスできないことを意味するはずです。ただし、ダイアログの背後にあるウィンドウを閉じることはできますが、これによりアプレットは強制終了されますが、ダイアログを開いたスレッドは強制終了されません。ウィンドウが閉じられたときにすべてのスレッドを強制終了するにはどうすればよいですか、または最初にダイアログを確認せずにユーザーがウィンドウを閉じるのを実際に停止するにはどうすればよいですか?
start()
EDIT 2:メソッドの最後で、アプレット自体にダイアログを作成しようとしました。これにより、アプレットが読み込まれるとすぐにダイアログが表示されますが、ダイアログの背後でブラウザウィンドウを閉じることができ、ダイアログはそのままです...