It is possible to provide a basic applet stub for an applet that is being hosted in a frame (a desktop app.). Several methods of the applet context are easy to reproduce in an application. The others are either harder, impractical to implement easily, or not relevant to a desktop based applet.
This example can be run as either an applet embedded in HTML or the applet viewer, or as an applet embedded in a desktop component (specifically a JOptionPane
since the code is shorter).
The example was adapted from one in which the OP was more interested in the applet parameters. This version also adds support for reporting the document and code base.
/*
<applet code='DesktopEmbeddedApplet' width='400' height='100'>
<param name='param' value='embedded in applet viewer or the browser'>
</applet>
*/
import java.applet.*;
import java.awt.*;
import javax.swing.*;
import java.io.File;
import java.net.URL;
import java.util.HashMap;
public class DesktopEmbeddedApplet extends JApplet {
public void init() {
setLayout(new GridLayout(0,1));
String param = getParameter("param");
System.out.println("parameter: " + param);
add(new JLabel(param));
add(new JLabel("" + getDocumentBase()));
add(new JLabel("" + getCodeBase()));
}
public static void main(String[] args) {
ApplicationAppletStub stub = new ApplicationAppletStub();
stub.addParameter("param", "embedded in application");
DesktopEmbeddedApplet pa = new DesktopEmbeddedApplet();
pa.setStub(stub);
pa.init();
pa.start();
pa.setPreferredSize(new java.awt.Dimension(400,100));
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() {
URL url = null;
try {
url = new File(".").toURI().toURL();
} catch(Exception e) {
System.err.println("Error on URL formation! null returned." );
e.printStackTrace();
}
return url;
}
public URL getCodeBase() {
URL url = null;
try {
url = new File(".").toURI().toURL();
} catch(Exception e) {
System.err.println("Error on URL formation! null returned." );
e.printStackTrace();
}
return url;
}
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);
}
}