Tit   Inh   Ind   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   <<   <   >   >> 

2.3 Schritt 2: Initialisierung des Applets



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
Listing 2.2: HTML-Datei zum Laden des Schiebepuzzle-Applets

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 }
Listing 2.3: Die init-Methode des Schiebepuzzle-Applets

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
Listing 2.4: Variablendeklarationen für das Schiebepuzzle

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.

 Hinweis 

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.

 Hinweis 


 Tit   Inh   Ind   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   <<   <   >   >> 
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com