6

Swingアプリケーションに埋め込みたいサードパーティアプレットがあります。基本的には別のパネルにしたいと思います。このアプレットは、多くのパラメータを使用します。

final String config_filename = getParameter(XXX);

HTMLを介してパラメーター値を送信する方法について多くのドキュメントを見てきましたが、コード(またはおそらくプロパティファイル)を介してどのように送信しますか?どんな助けでもいただければ幸いです!

4

2 に答える 2

14

&を実装しAppletStub、アプレットインスタンスのスタブとして設定します。例えば

/*
<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>
于 2011-05-25T21:34:55.810 に答える
7

完全なアプレット環境の場合は、andを実装AppletContextAppletStub(最小限の例についてはAndrewの回答setStubを参照)、コンストラクターでインスタンスを作成した後、最後のアプレットをアプレットに渡す必要があります。init()また、アプレットのライフサイクルメソッド、、、および(アプレットスタブを設定した後)start()の呼び出しにも注意する必要があります。stop()destroy()

このApplet.getParameter()メソッドは単にアプレットスタブに委任するだけなので、特別な場合には、AppletStub(必要なメソッド)を実装してこれを渡し、AppletContextを省略すれば十分な場合があります。また、ライフサイクルメソッドの一部またはすべてを呼び出さずに逃げることもできます。

于 2011-05-25T21:09:11.147 に答える