在Swing GUI中嵌入第三方JApplet并传递参数

|| 我想在我的Swing应用程序中嵌入一个第三方applet。基本上,我希望它只是另一个小组。此小程序使用许多参数,例如
final String config_filename = getParameter(XXX);
我看过很多有关如何通过HTML发送参数值的文档,但是如何通过代码(或属性文件)来实现呢?任何帮助,将不胜感激!     
已邀请:
实现一个ѭ1并将其设置为applet实例的存根。例如。
/*
<applet code=\'ParamApplet\' width=\'200\' height=\'200\'>
<param name=\'param\' value=\'foo\'>
</applet>
*/
import java.applet.*;
import javax.swing.*;
import java.net.URL;
import java.util.HashMap;

public class ParamApplet extends JApplet {

    public void init() {
        String param = getParameter(\"param\");
        System.out.println(\"parameter: \" + param);
        add(new JLabel(param));
    }

    public static void main(String[] args) {
        ApplicationAppletStub stub = new ApplicationAppletStub();
        stub.addParameter(args[0], args[1]);
        ParamApplet pa = new ParamApplet();
        pa.setStub(stub);

        pa.init();
        pa.start();
        pa.setPreferredSize(new java.awt.Dimension(200,200));
        JOptionPane.showMessageDialog(null, pa);
    }
}

class ApplicationAppletStub implements AppletStub {

    HashMap<String,String> params = new HashMap<String,String>();

    public void appletResize(int width, int height) {}
    public AppletContext getAppletContext() {
        return null;
    }

    public URL getDocumentBase() {
        return null;
    }

    public URL getCodeBase() {
        return null;
    }

    public boolean isActive() {
        return true;
    }

    public String getParameter(String name) {
        return params.get(name);
    }

    public void addParameter(String name, String value) {
        params.put(name, value);
    }
}
典型I / O
prompt>java ParamApplet param \"apples & oranges\"
parameter: apples & oranges

prompt>java ParamApplet param 42
parameter: 42

prompt>
    
对于完整的applet环境,您必须实现
AppletContext
AppletStub
(有关最小示例,请参阅Andrew的答案),然后在使用构造函数创建实例之后,将最后一个传递给applet的
setStub
。您还应该注意调用applet的生命周期方法
init()
start()
stop()
destroy()
(在设置了applet存根之后)。
Applet.getParameter()
方法只是委派给applet stub,因此在您的特殊情况下,仅实现AppletStub(它的所需方法)并通过忽略AppletContext并将其传递就足够了。您可能还不调用某些甚至所有生命周期方法就无法使用。     

要回复问题请先登录注册