2009-06-25 11 views
2

は、私はリロードを行うか、全体アプレットの2つの方法の1リフレッシュしたいと思います(ブラウザに含まれている)私のアプレットのボタンを持っている:ブラウザを更新することなく、アプレット自体からJavaアプレットをリロード/リフレッシュする方法はありますか?

  1. は、アプレット自体を更新し
  2. ブラウザ全体をリフレッシュする

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

+0

、http://stackoverflow.com/questions/661104/how-can-i-cause-the-browser-to-navigate-to-a-given-url-from-a-java-を参照してくださいアプレット – Pool

答えて

3

使用AppletContext.showDocument(...)メソッド:同じウィンドウでアプレットを含むドキュメントをロードします

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

は/アプレットをフレームがすでにロードされているために

0

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

、DOMからアプレットを削除し、その場所に新鮮なものを追加します。

また、あなたに、より多くのオプションを与えるのiFrame、アプレットを置くかもしれません。

しかし、アプレットをリロードであなたの目的は何ですか? (あなたは基本的には同じアプレットを再起動しているので、おそらくとにかくキャッシュされますと、あなたのJAR)代わりのJavaScriptに頼るのアプレット内に完全にこの問題を解決するためのより安全なアプローチとなります。

私はどちらかの示唆

:本物を再作成/削除することができ、小さなラッパーアプレットを経由してアプレットを実行しますが、メソッドの呼び出しとそのGUIとデータをリセットすることができるように

  • コードアプレットを、または
  • アプレットが表示されています。 、のAppletStubを実装し、実際のアプレットをインスタンス化し、(あなたのstart()メソッドで)のBorderLayout、このようなものの中心としてそれを表示::ラッパーアプレットのアプローチについては

Applet applet = new TheRealApplet(); 
applet.setStub(this); 
this.setLayout(new BorderLayout()); 
add(applet, BorderLayout.CENTER); 
applet.init(); 
applet.start(); 

。次に、ラッパーのstop()メソッドでapplet.stop()を呼び出し、アプレットを再起動する新しいメソッドを追加します。アプレットを停止し、レイアウトから削除し、新しいインスタンスを追加します。パート2については

関連する問題