Sovelmia esitellään käyttäen Javan versiota 1.0.2, koska Netscape® Communicator 4.04 -selain (käytössä mm. laitoksen Linux-järjestelmässä) ei osaa Javan versioita 1.1.*.
Sovelma voi olla melkein mikä tahansa Java-ohjelma. Turvallisuussyistä sovelman toimintamahdollisuudet ovat kuitenkin sovellusta rajoitetummat (selainkohtaisia eroja voi olla):
Laaditaan pikku sovelma maailman tervehtimiseen (HoiSovelma.java):
import java.awt.Graphics; public class HoiSovelma extends java.applet.Applet { public void paint(Graphics g) { g.drawString("Hoi maailma!", 10, 50); } }Sovelman paint-metodiin ja java.awt.Graphics-luokkaan tutustutaan kappaleessa 6.2.
Ja sitten kirjoitetaan WWW-sivu html-kielellä (HoHoi.html)
<html> <head> <title>HoHoi!</title> </head> <body> Sovelmani sanoo: <br> <APPLET CODE="HoiSovelma.class" WIDTH=250 HEIGHT=70> Selain ei ymmärrä Javaa! </APPLET> <p> Siinä se tuli, jos tuli! </body> </html>Ja tältä sovelma näyttää WWW-sivulla:
-----------------------------------------------Sovelmani sanoo:
Siinä se tuli, jos tuli!
-----------------------------------------------
Sovelman graafinen käyttöliittymä (GUI) toteutetaan pakkauksen java.awt tarjoamin välinein (Button, Checkbox, TextField, TextArea, List, Choice, Scrollbar, ...).
Luokka Applet - kaikkien sovelmien yliluokka - määrittelee nuo tapahtumiin reagoivat metodit tyhjinä. Siksi selain voi kaikille sovelmille nuo tapahtumat aiheuttaa, mutta oletusarvoisesti sovelma ei niihin reagoi.
Sovelma voi korvata (override) metodit omillaan, jos reagointia halutaan.
Esimerkissä HoiSovelma yllä ei tarvittu mitään reagointeja noihin tapahtumiin, senkuin vain tulostettiin teksti.
Esimerkki Mary Campionen ja Kathy Walrathin teoksesta " The Java Tutorial" (Simple.java):
Sovelma tulostaa tapahtumia sekä kenttäänsä että standarditulosvirtaan, joka näkyy Netscapessa ns. Java-konsolilla (valitse "Communicator/Java Console").
import java.applet.Applet; import java.awt.Graphics; public class Simple extends Applet { StringBuffer buffer; public void init() { buffer = new StringBuffer(); addItem("initializing... "); } public void start() { addItem("starting... "); } public void stop() { addItem("stopping... "); } public void destroy() { addItem("preparing for unloading..."); } void addItem(String newWord) { System.out.println(newWord); buffer.append(newWord); repaint(); } public void paint(Graphics g) { //Draw a Rectangle around the applet's display area. g.drawRect(0, 0, size().width - 1, size().height - 1); //Draw the current string inside the rectangle. g.drawString(buffer.toString(), 5, 15); } }
Huom: Java-konsoli ei ole normaali väline sovelmien tulostiedoille. Konsoli on vain testausväline.
Sovelma sijoitetaan html-sivulle ns. <APPLET>-tunnisteella. Aloitustunnisteeseen kirjoitetaan sovelman tietoja:
<APPLET CODE="HoiSovelma.class" WIDTH=250 HEIGHT=70> Tämä teksti tulostetaan, jos selain ei ymmärrä Javaa. </APPLET><APPLET>-tunnisteeseen voidaan koodiviitteen lisäksi liittää muitakin määreitä, mm.:
<APPLET CODE="XSovelma.class" CODEBASE="http://www.cs.Helsinki.fi/~wikla/JohdOhj/Sisalto/6/" WIDTH=300 HEIGHT=100> <PARAM name="Teksti" value="HiioHei"> Selain ei ymmärrä Javaa! </APPLET>Parametrien arvoja voidaan lukea getParameter(merkkijono)-metodilla:
import java.awt.Graphics; public class XSovelma extends java.applet.Applet { String teksti; public void init() { teksti = getParameter("Teksti"); } public void paint(Graphics g) { g.drawString(teksti, 10, 50); } }Tuo html-määrittely ja sovelma näyttävät tältä:
Sovelma voi tutkia selaimelta saamaansa tulostusalueen kokoa ilmauksilla:
this.size().width this.size().heightEsimerkki:
import java.awt.Graphics; public class XSovelma2 extends java.applet.Applet { String teksti; public void init() { teksti = getParameter("Teksti"); } public void paint(Graphics g) { int leveys = this.size().width; int korkeus = this.size().height; g.drawRect(0,0, leveys-1, korkeus-1); g.drawString(teksti, 7, 14); } }Testataan sovelmaa seuraavilla html-määrittelyillä:
<APPLET CODE="XSovelma2.class" WIDTH=210 HEIGHT=100> <PARAM name="Teksti" value="210x100"> Selain ei ymmärrä Javaa! </APPLET> <APPLET CODE="XSovelma2.class" WIDTH=100 HEIGHT=70> <PARAM name="Teksti" value="100x70"> Selain ei ymmärrä Javaa! </APPLET> <APPLET CODE="XSovelma2.class" WIDTH=50 HEIGHT=30> <PARAM name="Teksti" value="50x30"> Selain ei ymmärrä Javaa! </APPLET> <APPLET CODE="XSovelma2.class" WIDTH=60 HEIGHT=200> <PARAM name="Teksti" value="60x200"> Selain ei ymmärrä Javaa! </APPLET>Tulos näyttää tällaiselta: