Incorpora una JApplet di terze parti in una GUI Swing e passa i parametri

C’è un’applet di terze parti che vorrei incorporare nella mia applicazione Swing. Fondamentalmente, mi piacerebbe che fosse solo un altro pannello. Questa applet utilizza molti parametri, ad es

final String config_filename = getParameter(XXX); 

Ho visto molta documentazione su come inviare i valori dei parametri tramite HTML, ma come si fa tramite il codice (o forse i file di proprietà)? Qualsiasi aiuto sarebbe apprezzato!

Implementare un AppletStub e impostarlo come lo stub dell’istanza dell’applet. PER ESEMPIO

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

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

Per un ambiente di applet completo, è necessario implementare AppletContext e AppletStub (vedere la risposta di Andrew per un esempio minimo), quindi passare l’ultimo a setStub dell’applet dopo aver creato l’istanza con il costruttore. Dovresti anche aver cura di chiamare i metodi del ciclo di vita dell’applet init() , start() , stop() e destroy() (dopo aver impostato lo stub dell’applet).

Il metodo Applet.getParameter() semplicemente delega allo stub dell’applet, quindi nel caso particolare potrebbe essere sufficiente implementare solo AppletStub (i metodi necessari) e passare questo, omettendo l’AppletContext. Potresti anche andare via senza chiamare alcuni o addirittura tutti i metodi del ciclo di vita.