Java tutorial
import java.applet.Applet; import java.applet.AppletContext; import java.applet.AppletStub; import java.applet.AudioClip; import java.awt.Button; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.Panel; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; public class MainClass extends Applet implements ActionListener { static MainClass myApplet; static MyStub myStub; Image im; public void init() { System.out.println("Code base = " + getCodeBase()); System.out.println("Document base = " + getDocumentBase()); System.out.println("\ninit () called"); System.out.println("isActive () returns " + isActive()); Button b = new Button("Visit www.java2s.com"); b.addActionListener(this); add(b); b = new Button("Audio"); b.addActionListener(this); add(b); String imageName = getParameter("image"); if (imageName != null) im = getImage(getCodeBase(), imageName); } public void start() { System.out.println("start () called"); System.out.println("isActive () returns " + isActive()); } public void paint(Graphics g) { if (im != null) g.drawImage(im, 0, 0, this); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("Audio")) { String soundName = getParameter("audio"); if (soundName != null) { AudioClip ac = getAudioClip(getDocumentBase(), soundName); ac.play(); } return; } try { URL u = new URL("http://www.java2s.com"); getAppletContext().showDocument(u); } catch (MalformedURLException exc) { System.out.println(e); } } public void stop() { System.out.println("stop () called"); System.out.println("isActive () returns " + isActive()); } public void destroy() { System.out.println("destroy () called"); System.out.println("isActive () returns " + isActive()); } public static void main(String[] args) { Frame frame = new Frame("AppletAndApp as an Application"); myApplet = new MainClass(); frame.add(new Panel().add(myApplet)); frame.addNotify(); myApplet.setStub(myStub = new MyStub(args)); myApplet.init(); frame.setSize(300, 200); frame.setVisible(true); myStub.setActive(true); myApplet.start(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent w) { myStub.setActive(false); myApplet.stop(); myApplet.destroy(); System.exit(0); } }); } } class MyStub implements AppletStub { private boolean active = false; private Hashtable ht = new Hashtable(); private MyContext context; MyStub(String[] args) { context = new MyContext(); if ((args.length & 1) != 0) return; for (int i = 0; i < args.length; i += 2) ht.put(args[i], args[i + 1]); } public boolean isActive() { return active; } public URL getDocumentBase() { URL u = null; try { u = new URL("file:/C:./x.html"); } catch (MalformedURLException e) { } return u; } public URL getCodeBase() { URL u = null; try { u = new URL("file:/C:./"); } catch (MalformedURLException e) { } return u; } public String getParameter(String name) { return (String) ht.get(name); } public AppletContext getAppletContext() { return context; } public void appletResize(int width, int height) { } public void setActive(boolean active) { this.active = active; } } class MyContext implements AppletContext { public AudioClip getAudioClip(URL url) { return Applet.newAudioClip(url); } public Image getImage(URL url) { Toolkit tk = Toolkit.getDefaultToolkit(); return tk.getImage(url); } public Applet getApplet(String name) { return null; } public Enumeration getApplets() { return null; } public void showDocument(URL url) { System.out.println("Showing document " + url); } public void showDocument(URL url, String frame) { try { showDocument(new URL(url.toString() + frame)); } catch (MalformedURLException e) { } } public void showStatus(String message) { System.out.println(message); } public void setStream(String key, InputStream stream) throws IOException { } public InputStream getStream(String key) { return null; } public Iterator<String> getStreamKeys() { return null; } }