Applets DVG1 - Applets 1 Die Klasse Applet Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers, InternetExplorer, Netscape) abgearbeitet werden. Applets haben sehr beschränkten Zugriff auf die Ressourcen des Gastrechners. – Applets können kein Programme starten. – Applets können keine Dateien öffnen (keine Verzeichnisse lesen). – Applets können keine Systemeigenschaften des Gastrechners erkennen. – Applets können keine email-Adressen herausfinden. Applets können von jedem JAVA-fähigen Browser gestartet weren. jdk enthält das Programm appletviewer zu Starten von Applets. DVG1 - Applets 2 HTML-Interface Zu jedem Applet muß eine HTML-Datei existieren, die von einem Browser bzw. Viewer aufgerufen wird und die Verbindung zu einem JAVA-Object das von der Klasse Applet abgeleitet ist, herstellt. Beispiel: <APPLET CODE="Applet01.class" WIDTH="600" HEGHT="400"> </APPLET> Es wird eine Anzeigefläche von 600 Pixel Breite und 400 Pixel Höhe geöffnet, die Klasse Applet01.class gestartet und das Ergebnis angezeigt. DVG1 - Applets 3 Einfachstes Applet import java.awt.*; import java.applet.*; public class Applet01 extends Applet { public void paint(Graphics g) { g.drawString("Das ist das Applet01", 100,200); } } DVG1 - Applets 4 Methoden der Klasse Applet public void paint(Graphics g) – wird aufgerufen wenn das Applet neu gezeichnet wird public void init() – wird aufgerufen nachdem das Applet geladen wurde public void start() – wird aufgerufen wenn das Applet aktiv wird public void stop() – wird aufgerufen wenn das Applet deaktiviert wird public void destroy() – wird aufgerufen wenn das Applet beendet wird DVG1 - Applets 5 import java.awt.*; import java.applet.*; public class Applet02 extends Applet { int ninit = 0; public void init(){ ninit++; } int nstart = 0; public void start() { nstart++; } int nstop = 0; public void stop() { nstop++; } int ndestroy = 0; public void destroy() { ndestroy++; } int npaint = 0; public void paint(Graphics g) { npaint++; g.drawString("Das ist das Applet02", 100,200); g.drawString("init "+ninit,100,220); g.drawString("start "+nstart,100,240); g.drawString("stop "+nstop,100,260); g.drawString("destroy "+ndestroy,100,280); g.drawString("paint "+npaint,100,300); } } DVG1 - Applets 6 Applet und Frame Problem: Wie kann ein JAVA-Programm sowohl als Applet als auch als Frame-Programm geschrieben werden? Applet – Die im HTML-Teil aufgerufene Klasse muß public sein. Sie muß also als erste Klasse in der Datei stehen. Frame – Das Programm wird durch die Methode public static void main() gestartet, die in der ersten public-Klasse der Datei enthalten sein muß. – Das Frame kann in einer nicht-public-Klasse definiert sein. Die paint-Methoden der Applet-Klasse und der Frame-Klasse sind identisch. DVG1 - Applets 7 import java.awt.*; import java.applet.*; public class Applet03 extends Applet { public void paint(Graphics g) { g.drawString("Das ist das Applet03", 100,200); } public static void main (String [] args) { Applet03Frame f = new Applet03Frame(); f.setSize(600,400); f.show(); } } class Applet03Frame extends Frame { public void paint(Graphics g) { g.drawString("Das ist das Applet03", 100,200); } } DVG1 - Applets 8 import java.awt.*; import java.applet.*; public class Applet04 extends Applet { public void paint(Graphics g) { Applet04Grafik.paint(g); } public static void main (String [] args) { Applet04Frame f = new Applet04Frame(); f.setSize(600,400); f.show(); } } class Applet04Frame extends Frame { public void paint(Graphics g) { Applet04Grafik.paint(g); } } DVG1 - Applets 9 class Applet04Grafik { public static void paint(Graphics g) { g.drawString("Das ist das Applet04", 100,200); } } DVG1 - Applets 10