Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Swing GUI中嵌入第三方JApplet&;传递它的参数_Java_Swing_Parameters_Applet_Japplet - Fatal编程技术网

Java 在Swing GUI中嵌入第三方JApplet&;传递它的参数

Java 在Swing GUI中嵌入第三方JApplet&;传递它的参数,java,swing,parameters,applet,japplet,Java,Swing,Parameters,Applet,Japplet,我想在Swing应用程序中嵌入一个第三方小程序。基本上,我希望它只是另一个面板。此小程序使用许多参数,例如 final String config_filename = getParameter(XXX); 我看过很多关于如何通过HTML发送参数值的文档,但是如何通过代码(或者属性文件)发送呢?任何帮助都将不胜感激 对于完整的小程序环境,您必须实现AppletContext和AppletStub(请参阅最简单的示例),然后在使用构造函数创建实例后,将最后一个传递给小程序的setStub。您还应

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

final String config_filename = getParameter(XXX);

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

对于完整的小程序环境,您必须实现
AppletContext
AppletStub
(请参阅最简单的示例),然后在使用构造函数创建实例后,将最后一个传递给小程序的
setStub
。您还应该注意调用小程序的生命周期方法
init()
start()
stop()
destroy()
(设置小程序存根后)


Applet.getParameter()
方法只是简单地委托给Applet存根,因此在您的特殊情况下,仅实现AppletStub(它所需的方法)并传递它就足够了,并调用AppletContext。您也可以不调用部分甚至全部生命周期方法而逃脱。

实现一个
AppletStub
&将其设置为applet实例的stub。例如

/*
<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>