|
Um das Beispielprogramm nach dem Übersetzen zu starten, wird der Appletviewer benötigt. Der Appletviewer ist ein Programm, das eine einfache HTML-Datei interpretiert, die darin befindlichen APPLET-Tags extrahiert und die zugehörigen Applets aufruft. Ein Applet erfordert zum Start also immer eine HTML-Datei, in die es eingebunden wird. Dazu wird ein oder mehrere APPLET-Tags eingebunden, die den Namen der zu verwendenden Klassendatei, die Größe des Applets und seine Parameter angeben. Alle übrigen HTML-Anweisungen werden vom Appletviewer, der natürlich kein vollständiger Web-Browser ist, ignoriert.
Eine einfache HTML-Datei, die unser Applet lädt, sieht so aus:
001 <!-- Puzzle.html --> 002 <html> 003 <head> 004 <title>Puzzle</title> 005 </head> 006 <body> 007 <h1>Puzzle</h1> 008 <applet code=Puzzle.class width=278 height=348> 009 <param name="bordersize" value=30> 010 <param name="src" value="mine.gif"> 011 Hier steht das Applet Puzzle.class 012 </applet> 013 </body> 014 </html> |
Puzzle.html |
Sie enthält die üblichen Formalien einer HTML-Datei wie
HTML-, HEAD-
und BODY-Tags und das APPLET-Tag
zum Aufruf unseres Applets. Die erforderlichen Parameter code,
width und height
geben dabei den Namen der Klassendatei sowie die Breite und Höhe
des zur Ausgabe verfügbaren Bildschirmbereichs an. Die mit dem
PARAM-Tag definierten Parameter bordersize
und name werden an das Applet
weitergereicht und von diesem zur Einstellung der Rahmengröße
und zur Auswahl der Bilddatei verwendet. Das Applet kann mit folgendem
Kommando gestartet werden:
appletviewer Puzzle.html
Da alle Methoden leer sind, hat das Applet natürlich noch keinerlei benutzerdefinierte Funktionalität und es wird eine leere Ausgabefläche angezeigt (siehe Abbildung 2.3):
Abbildung 2.3: Ein leeres Applet
Ein Applet wird immer aus der Klasse Applet abgeleitet. Sie besitzt eine Reihe von Methoden, die zu Initialisierungszwecken überlagert werden können. Die Methode init ist eine davon. Sie wird lediglich ein einziges Mal aufgerufen und dient dazu, Einmalinitialisierungen vorzunehmen. Es gibt andere Methoden, die bei jedem Aufruf der zugehörigen HTML-Seite oder beim Verlassen derselben aufgerufen werden.
001 public void init() 002 { 003 aFields = new int[4][4]; 004 sourcefield = new Point(-1, -1); 005 lastpoint = new Point(-1, -1); 006 drawoffset = new Point(0,0); 007 bordersize = Integer.parseInt(getParameter("bordersize")); 008 if (bordersize < 1 || bordersize > 50) { 009 bordersize = 5; 010 } 011 setBackground(Color.lightGray); 012 addMouseListener(new MyMouseListener()); 013 addMouseMotionListener(new MyMouseMotionListener()); 014 prepareImage(); 015 randomizeField(true); 016 } |
In unserem Fall initialisiert init eine Reihe von Variablen bzw. erzeugt die erforderlichen Objektreferenzen. Objekte werden - von wenigen Ausnahmen abgesehen - immer mit Hilfe des new-Operators erzeugt, der von dem Klassennamen und der Liste der Parameter, die an den Konstruktor übergeben werden, gefolgt wird. Alle hier initialisierten Variablen wurden als Instanzvariablen im Kopf der Klasse deklariert (dort, wo im obigen Rumpf der Kommentar //Variablendeklarationen steht (Zeile 028)):
001 int aFields[][]; //Brett mit allen Feldern 002 Image image; //Bildspeicher 003 int bordersize; //Randbreite 004 Dimension fieldsize; //Größe eines Feldes 005 Dimension imagesize; //Größe des Bildes 006 Point sourcefield; //Bei Mausklick ausgewähltes Feld 007 Point lastpoint; //Ursprung des letzten Rechtecks 008 Point drawoffset; //Offset zur Mausdragposition |
Hier sind sowohl einfache Typen als auch Objektvariablen zu finden. Als Membervariablen sind sie nur innerhalb der Klasse Puzzle sichtbar, andere Klassen haben auf sie keinen direkten Zugriff.
Innerhalb von init wird auch der Applet-Parameter bordersize gelesen, der mit Hilfe des PARAM-Tags in der HTML-Datei übergeben wurde. Mit diesem sehr allgemeinen Parameterübergabemechanismus ist es möglich, nahezu beliebige Argumente an Applets zu übergeben und diese so in weiten Bereichen konfigurierbar zu machen. |
![]() |
|
![]() |
Die übrigen Anweisungen in init sind Methodenaufrufe. Mit addMouseListener und addMouseMotionListener werden die Objekte zur Behandlung von Mausereignissen erzeugt und registriert. Weiterhin wird durch Aufruf von setBackground die Hintergrundfarbe durch Übergabe eines Color-Objekts auf hellgrau eingestellt. Die anderen Methoden, prepareImage und randomizeField, sind lokale Methoden der Klasse Puzzle, die wir weiter unten erläutern.
Weiterführende Informationen zur Applet-Programmierung und den verschiedenen Parametern des APPLET-Tags finden sich in Kapitel 25. Die Definition von Variablen wird in Kapitel 4 erläutert, das Instanzieren von Objekten und der Aufruf von Methoden in Kapitel 7. In Kapitel 5 und Kapitel 6 werden Ausdrücke und Anweisungen behandelt. Methoden zur Grafikausgabe finden sich in Kapitel 14 und den folgenden Kapiteln. |
![]() |
|
![]() |
|
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com |