23
Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

Embed Size (px)

Citation preview

Page 1: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

Vortrag - Kenny Schlör

Applets

Einführung in die

Appletprogrammierung

Page 2: Vortrag - Kenny Schlör 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.

Page 3: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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.

Page 4: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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.

Page 5: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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.

Page 6: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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 Appletpublic class yourApplet extends Applet

{ // Code des Applet

} Jede Applethauptklasse muß als public declariert werden,da die Klasse

Applet selbst public ist.

Page 7: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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 ()

{ //Code der Methode

}

Page 8: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

Vortrag - Kenny Schlör

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 }

Page 9: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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>

Page 10: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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

Page 11: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

Vortrag - Kenny Schlör

Beispiel:

import java.awt.*;

import java.applet.*;

public class AppuAppl extends Applet

{

public 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();

}

}

Page 12: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

Vortrag - Kenny Schlör

class Applikation extends Frame{public void paint(Graphics g){ g.drawString("Das ist die Applikation", 100,200);}}

Page 13: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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, ... }};return info;

Page 14: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

Vortrag - Kenny Schlör

Parmeterübergaben

Beispiel:

<APPLET CODE= “Bsp.class“ width=200 height=200>

<PARAM name=text value=“Text von der HTML-PAGE.“>

<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.

Page 15: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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“; //(1)private final String PARAM_zahl=“zahl“;

public void init()

{

Sting param; // (2)

param = getParameter(PARAM_text); // (3)

if (param!=null) m_text = param; // (4)

Page 16: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

Vortrag - Kenny Schlör

param = getParameter(PARAM_zahl);

if (param !=null)

m_zahl=Integer.parseInt(param); //(5)}

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);

}

}

}

Page 17: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

Vortrag - Kenny Schlör

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 HTML-Datei 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 um.

Page 18: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

Vortrag - Kenny Schlör

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 .

Page 19: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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

Page 20: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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

Page 21: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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);}

Page 22: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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;

}

}

Page 23: Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung

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.