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

我想在Swing应用程序中嵌入第三方applet。 基本上,我希望它只是另一个小组。 这个applet使用了许多参数,例如

final String config_filename = getParameter(XXX); 

我已经看过很多关于如何通过HTML发送参数值的文档,但是你如何通过代码(或者属性文件)来做呢? 任何帮助,将不胜感激!

实现AppletStub并将其设置为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 params = new HashMap(); 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环境,您必须实现AppletContextAppletStub (请参阅Andrew的答案以获取最小示例),然后在使用构造函数创建实例后将最后一个传递给applet的setStub 。 您还应该注意调用applet的生命周期方法init()start()stop()destroy() (在设置applet存根之后)。

Applet.getParameter()方法只是委托给applet存根,因此在你的特殊情况下,它可能只是实现AppletStub(它需要的方法)并传递它,省略了AppletContext。 您也可以在不调用某些甚至所有生命周期方法的情况下逃脱。