我想在Swing应用程序中嵌入第三方applet。基本上,我希望它只是另一个小组。这个小程序使用了许多参数,例如
final String config_filename = getParameter(XXX);
我已经看过很多关于如何通过HTML发送参数值的文档,但是如何通过代码(或者属性文件)来实现?任何帮助将不胜感激!
答案 0 :(得分:13)
实施AppletStub
&将其设置为applet实例的存根。 E.G。
/*
<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);
}
}
prompt>java ParamApplet param "apples & oranges"
parameter: apples & oranges
prompt>java ParamApplet param 42
parameter: 42
prompt>
答案 1 :(得分:6)
对于完整的applet环境,您必须实现AppletContext
和AppletStub
(请参阅Andrew's answer获取最小示例),然后将最后一个传递给setStub
使用构造函数创建实例后的applet。您还应该注意调用applet的生命周期方法init()
,start()
,stop()
和destroy()
(在设置applet存根之后)。
Applet.getParameter()
方法只是委托给applet存根,因此在你的特殊情况下,只需要实现AppletStub(它所需的方法)并传递它,省略AppletContext。您也可以在不调用某些甚至所有生命周期方法的情况下离开。