7.2.4 | Einlesen von Parametern |
Die Vorgehensweise beim Einlesen von Parametern wird am Beispiel eines Applets vorgeführt, dem mittels des <PARAM>-Tags ein Text übergeben wird, den es anschließend auf der Standardausgabe ausgibt:import java.applet.Applet; public class ParamDemo extends Applet { String text; public void init() { // Festlegen von Alternativ-Text, falls der // Parameter nicht angegeben ist if ((text = getParameter("text")) == null) text = "no suitable parameter specified"; System.out.println(text); } }Das Einlesen des Parameters erfolgt mit Hilfe der Methode getParameter(String). Der an getParameter() übergebene String enthält den Namen, der auf der HTML-Seite für den Parameter festgelegt wurde. Ist der Name richtig angegeben, liefert getParameter() den entsprechenden Wert zurück.
Das zum obigen Applet gehörige <APPLET>-Tag hat folgenden Aufbau:<APPLET CODE="ParamDemo.class" WIDTH="0" HEIGHT="0"> <PARAM NAME="text" VALUE="This is a parameter"> </APPLET>Also müsste das Applet den Text »This is a parameter« ausgeben. Wird ein Applet parametriert, kann es universell eingesetzt werden. Das Applet besitzt dadurch eine Schnittstelle zur HTML-Seite, über die die Eigenschaften des Applets von außen verändert werden können. Man muss also nicht den Code des Applets modifizieren und neu kompilieren, um ihm neue Eigenschaften zu verleihen.
Ein Applet, das einen numerischen Wert als Parameter benötigt, muss den eingelesenen String in den gewünschten Zahlentyp umwandeln. Folgende Zeilen übernehmen das Einlesen eines int-Wertes:String numberString; int zahl = 0; if ((numberString = getParameter("text")) != null) number = Integer.parseInt(numberString);Wird innerhalb eines Applets ein Parameter angefordert, der nicht auf der HTML-Seite definiert wurde, liefert getParameter() den Wert null. Es ist z. B. denkbar, dass die Position eines Textes in das Applet eingelesen werden soll. Ist die Position aber nicht auf der HTML-Seite angegeben, dann kann das Applet diesen Parameter nicht verwenden.
Deshalb sollte man für Parameter, die für die richtige Funktion des Applets notwendig sind, innerhalb des Applets alternative Werte festlegen, die verwendet werden, falls der Parameter nicht angegeben ist.
Im obigen Beispiel wird dies folgendermaßen gemacht:if ((text = getParameter("text")) == null) text = "no suitable parameter specified";Wenn kein Parameter mit NAME="text" angegeben wird, erhält die Variable, die diesen Wert eigentlich aufnehmen soll (text), den Wert no suitable parameter specified zugewiesen.
Mit der Methode getParameter() kann man auch auf die mit dem <APPLET>-Tag angegebenen Attribute zugreifen. Hierzu wird getParameter() einfach der Name des Attributs übergeben. Auf diese Weise ist es z. B. möglich, den Namen eines Applets zu erfragen:String name = getParameter("NAME");Diese Methode wird auch im Abschnitt 7.2.5 benutzt.
Jedes Applet verfügt über die Methoden getParameterInfo() und getAppletInfo(). Diese Methoden können vom Autor eines Applets implementiert werden, wenn er einem Anwender Informationen über sein Applet zur Verfügung stellen will, der nur die kompilierten Klassen besitzt. Sie werden vom Appletviewer aufgerufen, wenn dessen Menüpunkt »Applet¦Info« gewählt wird.
Die Implementierung kann z. B. folgendermaßen aussehen:public String[][] getParameterInfo() { String pinfo[][] = { {"Text ", "String ","Text to scroll"}, {"Speed ", "1-5 ","Speed of scrolling"}, {"Orient ", "boolean","Direction of scrolling"}, {"TColor ", "r,g,b ","rgb values of text"}, {"bgColor", "r,g,b ","rgb values of background"} }; return pinfo; } public String getAppletInfo() { return "This Applet was written by\n" + "Stefan Middendorf, Reiner Singer, Jörn Heid"; }Diese Parameter sind auf ein Applet zugeschnitten, das einen scrollenden Text anzeigt. Abbildung 7.2 zeigt das Info-Fenster des Appletviewers mit den Informationen, die getAppletInfo() und getParameterInfo() liefern.Auf diese Art können so genannte »Plug and Play«-Applets geschaffen werden: Eine Person besitzt nur die kompilierten Klassen und kann das Applet durch geeignete Angabe der Parameter anpassen. Durch die Methoden getAppletInfo() und getParameterInfo() wird dies zusätzlich unterstützt.