Applets Einführung in die Appletprogrammierung Vortrag - Kenny Schlör Applets und Applikation: Die Unterschiede Es gibt zwei unterschiedliche Möglichkeiten ,Java-Programme laufen zu lassen,und zwar – entweder als ein selbständiges Programm(Applikation) • dieses wird mit einem Java-Intepreten ausgefürt – oder von einem WWW-Browser aus (ein sogenanntes Applet) • z.B. durch:Netscape Navigator, Microsoft Internet Explorer und Suns HotJava.Zusätzlich können Applets mit dem Applet-Viewer,der im JDK enthalten ist, angezeigt werden. Um ein Applet auszuführen , muß es in eine Webseite eingefügt werden. Dies geschieht mit Hilfe von HTML-Tags. Vortrag - Kenny Schlör Applets und Applikation: Die Unterschiede Durch die Verbindung zum Internet mittels Applet-Programmierung hat sich Java sehr stark durchsetzten Es ist möglich das ein einziges Programm Applikation und Applet zugleich beinhaltet.Die Vorgehensweise zum erstellen von Applets und Applikations stehen nicht im Konflikt zueinander.Es werden jeweils die Merkmale des anderen ignoriert. Vortrag - Kenny Schlör Sicherheit von Applets Es gelten folgende Vereinbarungen bei Netscape und dem Microsoft Internet Explorer Es gibt aus Sicherheitsgründen Applets-Einschränkungen – Es ist nicht möglich ,daß Applets im Dateisystem des Benutzers lesen und schreiben. – Applets können nur mit dem Internet-Server kommunizieren, von dem die Webseite stammt,die das Applet enthält. – Applets können keine Programme auf dem System des Benutzters ausführen. – Applets können keine Programme auf der lokalen Plattform laden , einschließlich gemeinsam genutzter Bibliotheken wie DLLs. Vortrag - Kenny Schlör Sicherheit von Applets Bei anderen Browser gibt es flexiblere Vereinbarung in Bezug auf Sicherheit durch eigene Konfiguration. 100% Sicherheit kann nicht garantiert werden . Genauere Infos findet man unter dem Begriff „hostile applets“ im Internet. Vortrag - Kenny Schlör Die Klasse Applet Beim Erstellen eines Applets werden an verschiedenen Punkten der Ausführung einige Methoden verwendet.Im Vergeich zu einer Applikation ,die für eine Initialisierung die „main-Methode“ zum aufruf verwendet. Alle Applets habe als Superklassen die Klasse „Applet“ aus dem Package „java.Applet“. import java.awt.*; //stellt die Graphische Oberfläche import java.applet.*; //stellt die Methoden von Applet public class yourApplet extends Applet { // Code des Applet } Jede Applethauptklasse muß als public declariert werden,da die Klasse Applet selbst public ist. Vortrag - Kenny Schlör Die Methoden der Klasse Applet: init,destroy Initialisieren: init () sie tritt auf ,wenn ein Applet geladen wird.Sie umfaßt das Erzeugen von Objekten, Laden von Bildern und Schriften und Setzten von Parameters.Die Methode ist vergleichbar mit einem Konstruktor . public void init () { //Code der Methode } Destroy: destroy() das Applet kann hinter sich aufräumen, bevor der Browser beendet wird,z.B. um andere laufende Objekte freizugeben.Im allgemeinen braucht destroy() nicht überschrieben werden, sofern Ressourcen nicht freigegeben werden müssen.Die Methode finalize() ist für Apples nicht gebrauchbar. public void destroy () { Vortrag - Kenny //Code der Schlör Methode } Die Methoden der Klasse Applet: Starten und Stoppen Starten und Stoppen: start(); stop() Das Starten unterscheidet sich vom Initialisieren,denn während seines Lebenszyklus kann ein Applet mehrmals gestartet werden,während eine Initialisierung nur einmal stattfindet. Beispiel:Das Applet gestoppt durch das Benutzen eines Links zu einer anderen Seite, beim erneuten Aufruf der Seite wird das Applet vom neuen gestartet. public void start/stop () { //Code der Methode } Vortrag - Kenny Schlör Schreiben einer Webseite und Anwenden des Appletviewer Um unser Programm ablaufen zu lasse, müssen wir eine Webseite erstellen in der das Applet eingebettet wird.Mit Hilfe eines Editors erzeugen wir uns eine Datei.html – Beispiel: <HTML> <HEAD> <TITLE>Simple Web Page</TITLE> </HEAD> <APPLET CODE=“Simple.class“ width=300 heigth=200 > </APPLET> </HTML> Vortrag - Kenny Schlör HTML-Tags &Appletviewer – – – – HTML-Tagst <TITLE> und </TITLE> ist beliebig wählbar und steht im Kopf der Webseite. Das Wort <APPLET> gibt die Sendung eines Applet an den Browser an (und die Beschreibung endet mit</APPLET>). Das Wort CODE gibt den Namen der Datei an(wie im Beispiel:Simple.class) . Die Wörter width (Breite) und heigth(Höhe) geben die Größe des Appletsfensters an. Gemessen wird in Pixel. Der Appletviewer ist ein Werkzeug zum Testen von Applet. Er ist eine alternative zu den Browsers. – appletviewer Simple.html Vortrag - Kenny Schlör Beispiel: import import public { public { java.awt.*; java.applet.*; class AppuAppl extends Applet void paint(Graphics g) g.drawString("Das ist das Applet", 100,200); } public static void main (String [] args) { Applikation r = new Applikation(); f.setSize(600,400); f.show(); } } Vortrag - Kenny Schlör class Applikation extends Frame { public void paint(Graphics g) { g.drawString("Das ist die Applikation", 100,200); } } Vortrag - Kenny Schlör Info-Methoden der Klasse Applet Die Methode getAppletInfo() ist eine Möglichkeit Informationen über das Applet zur Verfügung zu stellen . Der Appletviewer ruft die Info auf . Eine zweite Methode getParameterInfo() der Appletklasse wird benutzt, um Informationen über die Aufrufparameter auszugeben. Die Methode liefert ein mehrdimensonales Feld von Strings. Beispiel: public String getAppletInfo() { return “Name .....\r\n “+“ Autor:....“; } public String [ ] [ ] getParameterInfo() { {Name_PARAM1,“Typ“,“Bedeutung“},...{Name_PARAM2, ... } }; Vortrag - Kenny Schlör return info; Parmeterübergaben Beispiel: <APPLET CODE= “Bsp.class“ width=200 height=200> <PARAM name=text value=“Text von der HTMLPAGE.“> <PARAM name= zahl value=200 > </APPLET> Es werden hier zwei Parameter übergeben.Dafür wird das Tag <PARAM>verwendet. Mit Name wird der Parametername und mit value sein übergebener Wert festgelegt. Bei Applets muß jeder Parameter explizit mittels getParameter()ermittelt und einer Variablen zugewiesen werden. Vortrag - Kenny Schlör Weiter zum Beispiel: import java.applet.*; import java.awt.*; public class Bsp extends applet { private String m_text =“Hier erscheint Text.“; private int _zahl =0; private final String PARAM_text =“text“; private final String PARAM_zahl=“zahl“; //(1) public void init() { Sting param; param = getParameter(PARAM_text); if (param!=null) m_text = param; Vortrag - Kenny Schlör // (2) // (3) // (4) param = getParameter(PARAM_zahl); if (param !=null) m_zahl=Integer.parseInt(param); } public void paint (Graphics g) { g.drawString(m_text,10,20); for (int i=0;i < m_zahl ;i++ ) { int a =(int)(200.0 *Math.random()); int b =(int)(200.0 *Math.random()); int c =(int)(200.0 *Math.random()); int d =(int)(200.0 *Math.random()); g.drawLine( a, b, c, d); } } } Vortrag - Kenny Schlör //(5) Parameterübergabe (1): Die Parameter werden namentlich und nicht in einer bestimmten Reihenfolge übergeben.Es wird eine konstante(final) Variable definiert.Der Vorteil ist ,das getParameterInfo diese Variable benutzten kann, um die Parameternamen auszugeben. (2):Die Parameter werden als Zeichenkette übergeben,dafür wird eine Hilfsvariable (param),zum Zwischenspeichern.Der Inhalt wird dann in den jeweiligen Typ umgewandelt. (3):Hier erfolgt die Parameterübergabe .Die Methode getParameter benutzt ein Zeichenkettenargument PARAM_text um in der HTMLDatei die <PARAM> -Marke mit dem passenden Namen zu finden. (4):Es muß nach null getestet werden , da überprüft werden muß op das HTML-Dokument einen Wert festlegt. (5):Bei true wird zugewiesen. (6):Integer.parseInt(variable) wandelt einen Stirng in eine Ganzzahl Vortrag - Kenny Schlör um. Ereignisse Appletts verarbeiten Ereignisse.Jedesmal wenn die Maus bewegt wird,eine Taste gedrückt wird,das Applet verdeckt wird usw.. , wird ein Objekt der Klasse Event erzeugt.Das Objekt wird durch seine Attribute genauer beschrieben.Alle Attribute sind public Immer wenn ein Ereignis auftritt wird eine Methode von Applet aufgerufen,die von Component geerbt wurde.Es ist die handleEvent. public boolean handleEvent(Event evt) Bei der Rückgabe wird bestimmt ob das Ereignis verarbeitet wurde. Die Methode ist die Drehscheibe der Ereignisverarbeitung. Sie überreicht das Objekt an spezielle Handler weiter.Die Handler sind alle public und geben einen boolean-Wert zurück . Vortrag - Kenny Schlör Speziele Handler public boolean gotFocus(Event evt,Object what) Erhalt des Eingabefokus public boolean lostFocus(Event evt,Object what) Verlust des Eingabefokus public boolean mouseEnter(Event evt,int x,int y) Maus tritt ins Applet ein. public void mouseExit(Event evt,int x,int y) Maus ist außerhalb des Applets public boolean mouseDown(Event evt,int x,int y) Maustaste wird gedrückt public boolean mouseDrag(Event evt,int x,int y) Maus wird gezogen Vortrag - Kenny Schlör Spezielle Handler public boolean mouseUp(Event evt,int x,int y) Maus wurde losgelassen public boolean mouseMove(Event evt,int x, int y) Maus wird bewegt keyDown(Event evt,int key) Tastaturtaste wurde gedrückt keyUp(Event evt,int key) Tastaturtaste wurde losgelassen action(Event evt,Object what) fast alles andere Vortrag - Kenny Schlör import java.awt.*; import java.applet.*; public class Fokus extends Applet { private String m_text =“Anfang"; private int m_start=0; private int m_stop=0; private String msg=null; public void paint (Graphics g) { g.drawString (m_text,100,100); } Vortrag - Kenny Schlör public boolean gotFocus (Event evt ,Object what) { setBackground(Color.green); m_text="Hallo!"; repaint(); return true; } public boolean lostFocus(Event evt,Object what) { setBackground(Color.yellow); m_text="Tschau!"; repaint(); return true; } Vortrag - Kenny Schlör } Bemerkungen und andere Methoden Egal ob das Applet den Fokus hat oder nicht ,jedesmal wenn der Coursor über die Appletfläche läuft wird ein Ereignisobjekt übergeben. repaint() repaint fordert eine Neuzeichnung über die paint-Methode repaint (int x, int y,int width int height) Die Parameter von repaint geben den zu aktualisierenden Bereich an. Vortrag - Kenny Schlör