Embed a 3rd-party JApplet in a Swing GUI & pass it parameters

前端 未结 2 1332
余生分开走
余生分开走 2020-11-29 10:47

There\'s a third-party applet that I\'d like to embed in my Swing application. Basically, I\'d like it to be just another panel. This applet makes use of many parameters,

2条回答
  •  粉色の甜心
    2020-11-29 11:28

    Implement an AppletStub & set it as the stub of the applet instance. E.G.

    /*
    
    
    
    */
    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);
        }
    }
    

    Typical I/O

    prompt>java ParamApplet param "apples & oranges"
    parameter: apples & oranges
    
    prompt>java ParamApplet param 42
    parameter: 42
    
    prompt>
    

提交回复
热议问题