2

アプレット(ブラウザに含まれている)にボタンがあり、アプレット全体を次の2つの方法のいずれかでリロードまたは更新します。

  1. ブラウザを更新せずにアプレット自体を更新します
  2. ブラウザ全体を更新する

これはアプレット内から可能ですか?

4

2 に答える 2

3

AppletContext.showDocument(...) メソッドを使用します。

applet.getAppletContext().showDocument(applet.getDocumentBase(), "_self")

これにより、アプレットが既に読み込まれている同じウィンドウ/フレームにアプレットを含むドキュメントが読み込まれます。

于 2009-06-26T00:45:33.820 に答える
0

質問の最初の部分については、いくつかのアプローチがあります。JavaScript を呼び出して、そこからアプレットを削除/再追加することができます。Java から JS への呼び出しにはLiveConnectを使用し、アプレット タグで「MAYSCRIPT」属性を必ず使用してください。

JavaScript メソッドで、DOM からアプレットを削除し、その場所に新しいアプレットを追加します。

アプレットを iFrame に配置することもできます。これにより、より多くのオプションが提供されます。

しかし、アプレットをリロードする目的は何ですか? JavaScript に依存するのではなく、アプレット内でこの問題を完全に解決する方が安全な方法です (いずれにせよ JAR はキャッシュされる可能性が高いため、基本的には同じアプレットを再起動するだけです)。

次のいずれかをお勧めします。

  • メソッド呼び出しで GUI とデータをリセットできるようにアプレットをコーディングします。
  • 表示されている実際のアプレットを削除/再作成できる小さなラッパー アプレットを介してアプレットを実行します。

ラッパー アプレット アプローチの場合: 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() を呼び出し、アプレットを停止してレイアウトから削除し、新しいインスタンスを追加することによって、アプレットを再起動する新しいメソッドを追加します。

于 2010-06-01T22:39:42.420 に答える