アプレット(ブラウザに含まれている)にボタンがあり、アプレット全体を次の2つの方法のいずれかでリロードまたは更新します。
- ブラウザを更新せずにアプレット自体を更新します
- ブラウザ全体を更新する
これはアプレット内から可能ですか?
AppletContext.showDocument(...) メソッドを使用します。
applet.getAppletContext().showDocument(applet.getDocumentBase(), "_self")
これにより、アプレットが既に読み込まれている同じウィンドウ/フレームにアプレットを含むドキュメントが読み込まれます。
質問の最初の部分については、いくつかのアプローチがあります。JavaScript を呼び出して、そこからアプレットを削除/再追加することができます。Java から JS への呼び出しにはLiveConnectを使用し、アプレット タグで「MAYSCRIPT」属性を必ず使用してください。
JavaScript メソッドで、DOM からアプレットを削除し、その場所に新しいアプレットを追加します。
アプレットを iFrame に配置することもできます。これにより、より多くのオプションが提供されます。
しかし、アプレットをリロードする目的は何ですか? JavaScript に依存するのではなく、アプレット内でこの問題を完全に解決する方が安全な方法です (いずれにせよ JAR はキャッシュされる可能性が高いため、基本的には同じアプレットを再起動するだけです)。
次のいずれかをお勧めします。
ラッパー アプレット アプローチの場合: AppletStub を実装し、実際のアプレットをインスタンス化し、それを BorderLayout の中心として表示します (start() メソッドで):
Applet applet = new TheRealApplet();
applet.setStub(this);
this.setLayout( new BorderLayout() );
add( applet, BorderLayout.CENTER );
applet.init();
applet.start();
...次に、ラッパーの stop() メソッドで applet.stop() を呼び出し、アプレットを停止してレイアウトから削除し、新しいインスタンスを追加することによって、アプレットを再起動する新しいメソッドを追加します。