Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage
<< | < | > | >> | API | Kapitel 39 - Applets I

## 39.2 Einbinden eines Applets

- 39.2 Einbinden eines Applets
  - 39.2.1 Das APPLET-Tag
  - 39.2.2 Die Parameter des Applet-Tags
  - 39.2.3 Parameterübergabe an Applets

### 39.2.1 Das APPLET-Tag

Das Einbinden eines Applets in ein HTML-Dokument erfolgt unter Verwendung des APPLET-Tags, es wird also durch `<APPLET>` eingeleitet und durch `</APPLET>` beendet. Zwischen den beiden Marken kann ein Text stehen, der angezeigt wird, wenn das Applet nicht aufgerufen werden kann. Ein applet-fähiger Browser ignoriert den Text. Beispiel:

    001 <APPLET CODE="Hello.class" WIDTH=300 HEIGHT=200>
    002 Hier steht das Applet Hello
    003 </APPLET>

Listing 39.4: Das APPLET-Tag

Ein Applet-Tag wird wie normaler Text in die Browser-Ausgabe eingebunden. Das Applet belegt soviel Platz auf dem Bildschirm, wie durch die Größenangaben `WIDTH` und `HEIGHT` reserviert wurde. Soll das Applet in einer eigenen Zeile stehen, müssen separate Zeilenschaltungen in den HTML-Code eingebaut werden (beispielsweise `<p>` oder `<br>`), oder es muß ein Tag verwendet werden, dessen Ausgabe in einer eigenen Zeile steht (z.B. `<h1>` bis `<h6>`).

Neben dem Ersatztext, der zwischen dem Beginn- und Ende-Tag steht, besitzt ein Applet-Tag weitere Parameter:

- Eine Reihe von Parametern, die innerhalb von `<APPLET>` untergebracht werden und die Größe und Anordnung des Applets bestimmen. `CODE`, `WIDTH` und `HEIGHT` müssen dabei in jedem Fall angegeben werden, außerdem gibt es noch einige optionale Parameter.
- Eine Liste von PARAM-Tags, die zwischen `<APPLET>` und `</APPLET>` stehen und zur Parameterübergabe an das Applet verwendet werden.

Zwischen beiden Parameterarten besteht ein grundsätzlicher Unterschied. Während die Parameter der ersten Gruppe (also `CODE`, `WIDTH` und `HEIGHT`) vom Browser interpretiert werden, um die visuelle Darstellung des Applets zu steuern, werden die Parameter der zweiten Gruppe an das Applet weitergegeben. Der Browser übernimmt bei ihnen nur die Aufbereitung und die Übergabe an das Applet, führt aber selbst keine Interpretation der Parameter aus.

### 39.2.2 Die Parameter des Applet-Tags

Der wichtigste Parameter des Applet-Tags heißt `CODE` und gibt den Namen der Applet-Klasse an. Bei der Angabe des `CODE`-Parameters sind einige Dinge zu beachten:

- Der Klassenname sollte inklusive der Extension .class angegeben werden.
- Groß- und Kleinschreibung müssen eingehalten werden.
- Die Klassendatei muß im aktuellen bzw. angegebenen Verzeichnis zu finden sein.

Alternativ kann die Klassendatei auch in einem der Verzeichnisse liegen, die in der Umgebungsvariablen `CLASSPATH` angegeben wurden. `CLASSPATH` enthält eine Liste von durch Kommata getrennten Verzeichnissen, die in der Reihenfolge ihres Auftretens durchsucht werden. `CLASSPATH` spielt außerdem beim Aufruf des Compilers eine Rolle: Sie dient dazu, die importierten Pakete zu suchen.

Das Applet-Tag hat zwei weitere nichtoptionale Parameter `WIDTH` und `HEIGHT`, die die Höhe und Breite des für das Applet reservierten Bildschirmausschnitts angeben. Innerhalb des Applets steht ein Rechteck dieser Größe als Ausgabefläche zur Verfügung.

Das Applet-Tag besitzt weitere optionale Parameter. Diese dienen zur Konfiguration des Applets und zur Beeinflussung der Darstellung des Applets und des umgebenden Textes. Tabelle 39.1 gibt einen Überblick über die verfügbaren Parameter:

Parameter | Bedeutung
`CODEBASE` | Hier kann ein alternatives Verzeichnis für das Laden der Klassendateien angegeben werden. Fehlt diese Angabe, wird das Dokumentenverzeichnis genommen.
`ARCHIVE` | Angabe eines JAR-Archivs, aus dem die Klassendateien und sonstigen Ressourcen des Applets geladen werden sollen. Ein Beispiel zur Verwendung des ARCHIV-Parameters ist in Abschnitt 50.6 bei der Vorstellung von `jar` zu finden.
`OBJECT` | Name einer Datei, die den serialisierten Inhalt des Applets enthält
`ALT` | Alternativer Text für solche Browser, die zwar das Applet-Tag verstehen, aber Java nicht unterstützen
`NAME` | Eindeutiger Name für das Applet. Er kann zur Unterscheidung mehrerer, miteinander kommunizierender Applets auf einer Web-Seite verwendet werden.
`ALIGN` | Vertikale Anordnung des Applets in einer Textzeile. Hier kann einer der Werte `left`, `right`, `top`, `texttop`, `middle`, `absmiddle`, `baseline`, `bottom` oder `absbottom` angegeben werden.
`VSPACE` | Rand über und unter dem Applet
`HSPACE` | Rand links und rechts vom Applet

Tabelle 39.1: Optionale Parameter des APPLET-Tags

### 39.2.3 Parameterübergabe an Applets

Neben den Parametern des Applet-Tags gibt es die Möglichkeit, Parameter an das Applet selbst zu übergeben. Dazu kann innerhalb von `<APPLET>` und `</APPLET>` das optionale Tag `<PARAM>` verwendet werden. Jedes PARAM-Tag besitzt die beiden Parameter `name` und `value`, die den Namen und den Wert des zu übergebenden Parameters angeben.

Innerhalb des Applets können die Parameter mit der Methode `getParameter` der Klasse `Applet` abgefragt werden:

    public String getParameter(String name)
| java.applet.Applet

Für jeden angegebenen Parameter liefert `getParameter` den zugehörigen Wert als `String`. Numerische Parameter müssen vor der weiteren Verwendung also erst konvertiert werden. Wird der angegebene Parameter nicht gefunden, gibt die Methode `null` zurück.

Das folgende Listing demonstriert den Einsatz von `getParameter` am Beispiel eines Applets, das eine rot-weiße Schranke zeichnet. Das Applet erwartet zwei Parameter `redwidth` und `whitewidth`, die die Breite des roten und weißen Abschnitts angeben. Diese werden in der `init`-Methode gelesen und dem Array `dx` zugewiesen. In `paint` wird dieses Array dann verwendet, um abwechselnd weiße und rote Parallelogramme der gewünschten Größe auszugeben. Insgesamt entsteht dadurch der Eindruck einer rot-weißen Schranke:

    001 /* Schranke.java */
    002
    003 import java.awt.*;
    004 import java.applet.*;
    005
    006 public class Schranke
    007 extends Applet
    008 {
    009   private int[] dx;
    010   private Color[] color;
    011
    012   public void init()
    013   {
    014     String tmp;
    015
    016     dx = new int[2];
    017     try {
    018       dx[0] = Integer.parseInt(
    019         getParameter("redwidth")
    020       );
    021       dx[1] = Integer.parseInt(
    022         getParameter("whitewidth")
    023       );
    024     } catch (NumberFormatException e) {
    025       dx[0] = 10;
    026       dx[1] = 10;
    027     }
    028     color = new Color[2];
    029     color[0] = Color.red;
    030     color[1] = Color.white;
    031   }
    032
    033   public void paint(Graphics g)
    034   {
    035     int maxX = getSize().width;
    036     int maxY = getSize().height;
    037     int x = 0;
    038     int flg = 0;
    039     Polygon p;
    040     while (x <= maxX+maxY/2) {
    041       p = new Polygon();
    042       p.addPoint(x,0);
    043       p.addPoint(x+dx[flg],0);
    044       p.addPoint(x+dx[flg]-maxY/2,maxY);
    045       p.addPoint(x-maxY/2,maxY);
    046       p.addPoint(x,0);
    047       g.setColor(color[flg]);
    048       g.fillPolygon(p);
    049       x += dx[flg];
    050       flg = (flg==0) ? 1 : 0;
    051     }
    052   }
    053 }
| Schranke.java

Listing 39.5: Ein parametrisiertes Applet

Das folgende HTML-Dokument zeigt die Einbindung eines Schranken-Applets mit einer Höhe von 10 Pixeln und einer Breite von 400 Pixeln. Die roten Felder der Schranke sind 10 und die weißen 7 Pixel breit:

    001 <html>
    002 <head>
    003 <title>Schranke</title>
    004 </head>
    005 <body>
    006 <h1>Schranke</h1>
    007 <applet code="Schranke.class" width=400 height=10>
    008 <param name="redwidth" value=10>
    009 <param name="whitewidth" value=7>
    010 Hier steht das Applet Schranke.class
    011 </applet>
    012 </body>
    013 </html>
| Schranke.html

Listing 39.6: Die HTML-Datei zum Schranken-Applet

Beim Aufruf mit dem Netscape Navigator sieht die Ausgabe des Applets so aus:

Abbildung 39.2: Darstellung des Schranken-Applets im Netscape Navigator

|  | Im Gegensatz zu einer Applikation wird ein Applet nicht direkt mit dem Java-Interpreter `java.exe` aufgerufen. Statt dessen wird es in eine HTML-Datei eingebunden und indirekt über den Appletviewer oder einen Web-Browser aufgerufen, der die HTML-Datei lädt. Unser Programm kann beispielsweise mit dem folgenden Kommando gestartet werden: |  |
Hinweis

    appletviewer Schranke.html

Auch die »echten« Web-Browser können meist mit einer Datei als Argument aufgerufen werden. Alternativ kann die HTML-Datei natürlich auch direkt aus dem laufenden Browser geladen werden. Der Applet-Viewer ist kein vollwertiger Browser, sondern extrahiert lediglich die `APPLET`-Tags und ihre Parameter, um die in der HTML-Datei angegebenen Applets zu starten.

Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de