アプレットが別のアプレットを起動する方法
特定のシナリオでは、別のアプレットを起動して他のタスクを実行するために既存のアプレットが必要になる場合があります。
デモ用の2つのファイル
1. AppletExample1.java
2. AppletExample2.java
「AppletExample1.java」には「スレッド」が含まれており、5秒後に「AppletExample2.java」を起動します。
1. AppletExample1.java
package com.example.applet;
import java.applet.Applet;
import java.applet.AppletStub;
import java.awt.Graphics;
import java.awt.GridLayout;
public class AppletExample1 extends Applet
implements Runnable, AppletStub {
Thread threadABC;
public void init(){}
public void paint(Graphics g) {
g.drawString("I'm Applet 1 ~", 10, 10);
g.drawString("Loading Applet 2 ...", 10, 30);
}
public void run() {
try {
//sleep for 5 seconds , for demo
threadABC.sleep(5000);
Class applet2 = Class.forName("com.example.applet.AppletExample2");
Applet appletToLoad = (Applet)applet2.newInstance();
appletToLoad.setStub(this);
setLayout( new GridLayout(1,0));
add(appletToLoad);
appletToLoad.init();
appletToLoad.start();
}catch (Exception e) {
System.out.println(e);
}
validate();
}
public void start(){
threadABC = new Thread(this);
threadABC.start();
}
public void stop() {
threadABC.stop();
threadABC = null;
}
public void appletResize( int width, int height ){
resize( width, height );
}
}
2. AppletExample2.java
package com.example.applet;
import java.applet.Applet;
import java.awt.Graphics;
public class AppletExample2 extends Applet{
public void init(){ }
public void paint(Graphics g) {
g.drawString("I'm Applet 2 ~", 10, 10);
}
}
3. HTMLロードアプレット
「AppletExample1」をロードするのに違いはなく、通常どおりロードするだけです。
Testing
4. Done
アプレットが表示されます(AppletExample1)
"I'm Applet 1 ~" "Loading Applet 2 ..."
5秒後、(AppletExample2)に変わります
I'm Applet 2 ~"
Appletパラメーターはどうですか?
両方のアプレットは、アプレットタグ内で指定された同じパラメータを共有します。
例えば、
「AppletExample1.java」と「AppletExample2.java」の両方が、getParameter(「paramUrl」)メソッドで「paramUrl」値にアクセスできます。