Как апплет запустить другой апплет

Как запустить апплет другой апплет

В некоторых случаях вам может понадобиться существующий апплет для запуска другого апплета для выполнения другой задачи.

Вот два файла для демонстрации

1. AppletExample1.java
2. AppletExample2.java

«AppletExample1.java» содержит «Thread» и запускает «AppletExample2.java» через 5 секунд.

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» могут получить доступ к значению «paramUrl» с помощью метода getParameter («paramUrl»).