Applet - Institut für Informatik - Hu

Werbung
Schwerpunkte
• Anwendungen und Applets
14. Applets
• Erstes Applet-Programm:
Temperaturberechnung
Java-Beispiel:
TempApplet.java
TempApplet.html
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Version: 27. Jan. 2016
2
Java-Applets durch Web-Browser starten?
Zwei Arten von Java–Programmen
Î Hypertext Markup Language HTML zur
Beschreibung von Webseiten erweitern
• Applikationen / Anwendungen:
Im Detail:
Æ Kompilierte Java-Programme (Hallo.class) in Web-Seiten
einbinden (analog wie Bilder, Links, Videos …)
Direkte Ausführung mit dem Java-Interpreter
(java Temperature)
Æ Web-Browser kennt Java-Interpreter: ruft ihn auf
bisher
Æ Java-Applets können über das Netz geladen und direkt vom
Browser ausgeführt werden
(.class-Programme
- nicht .java-Quellen)
• Applets:
Start mit Hilfe eines Web-Browsers
(Firefox, Microsoft Internet Explorer)
Æ Applets laufen in graphischer Oberfläche der Web-Seite
(z.B. Firefox-Oberfläche)
neu
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
3
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
4
HTML-Dokumente: Bestandteile
Beispiel: TempApplet.html
• Text
(mit Hervorhebungen: Farben, Unterstrich, Dicke, Größe)
<html>
<head>
<title>Temperatur-Umwandlung!</title>
</head>
<body>
<P>
<b>
<a href=
"http://www.informatik.hu-berlin.de">
Institut fuer Informatik, Humboldt-Universitaet zu
Berlin
</a>
</b>
<P>
<b>Temperatur-Umwandlung:Fahrenheit -> Celsius</b>
<hr>
<P>
<applet CODE="TempApplet.class" WIDTH=300 HEIGHT=100>
</applet>
</body>
</html>
• Verweise auf andere Dokumente:
<a href="http://www.informatik.hu-berlin.de">
• Bilder:
<img align=bottom height=20
src="bilder/earth2.gif" border=0>
• Programme: laufen als Teil der Webseite
<applet
CODE="TempApplet.class" WIDTH=300 HEIGHT=100>
</applet>
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
5
Firefox: TempApplet.html geladen
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
6
Firefox: TempApplet.html geladen
Wirkung des Applet
<html>
<head>
<title>Temperatur-Umwandlung!</title>
</head>
<body>
<P>
<b>
<a href=
"http://www.informatik.hu-berlin.de">
Institut fuer Informatik,
Humboldt-Universitaet zu
Berlin
</a>
</b>
<P>
<b>Temperatur-Umwandlung:
Fahrenheit -> Celsius</b>
<hr>
<P>
<applet CODE="TempApplet.class"
WIDTH=300 HEIGHT=100>
</applet>
</body>
</html>
Wirkung des Applet
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
7
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
8
Applet-Beispiel: TempApplet.java
Appletviewer: aktiviert Applets direkt
> appletviewer TempApplet.html
3 Pakete
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
Applet testen
- nicht gleich im
Browser das
gesamte HTML-File
Mehrfachvererbung
// Respond to Action Event:
// typing in the tFahr TextField
public void actionPerformed (ActionEvent e) {
public class TempApplet extends Applet
implements ActionListener {
double fahr = 0.0,
cent = 0.0;
fahr = Integer.parseInt(tFahr.getText());
cent = 5.0 * (fahr - 32) / 9.0;
lCent.setText(fahr + " deg F is " + cent + " deg C");
// Convert from Fahrenheit to Centigrade
TextField tFahr;
Label lCent;
2 Dialogelemente
public void init() {
// Create the TextField and the Label
tFahr = new TextField(10);
lCent = new Label( "I’ll tell you what
that is in degrees C");
}
}
// Lay out the three Components
add(new Label("Please type the
temperature (deg F): "));
add(tFahr);
add(lCent);
2 Methoden
// Register the Component Listener
tFahr.addActionListener(this);
}
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
9
Vergleich: Applikation - Applet
Applikation
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Programmentwicklung: Anwendungen
Editor
Applet
Temperature
File: Hello.java
(Quellprogramm)
TempApplet
main()
init()
10
class Hello
...
}
{
Start
des Applet
durch init()
Compiler
actionPerformed()
File: Hello.class
(Objektprogramm)
0
3
getstatic ...
ldc ...
Ausgabe:
JavaInterpeter
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
11
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Hello !
12
Programmentwicklung: Applets
Erklärung zum Temperatur-Applet
Editor
TempApplet.java
1. Importe
2. API-Struktur: API - Pakete - Klassen
HTML:
3. Klasse Applet
<applet CODE="TempApplet.class"
. . . </applet>
4. Initialisierung des Fensters
Compiler
5. Reaktion auf Ereignisse
TempApplet.class
Abarbeitung:
JavaInterpreter
6. globale und lokale Variablen
Web-Browser
Wirkung:
Webseiten-Oberfläche
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
13
Importe
drei Dienste benötigt:
import java.awt.*;
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
14
Organisation des Java–API
Programmierung der graphischen
Benutzeroberfläche
(awt = abstract windowing toolkit)
import java.applet.*;
Java - API
java.applet
java.awt
java.awt.event
...
java.lang
Applet-Klasse u. a.
import java.awt.event.*;
Textfield
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class TempApplet extends Applet
implements ActionListener {
Label
Pakete:
Sammlung von Klassen
Ereignisbehandlung
// Convert from Fahrenheit to Centigrade
TextField tFahr;
Label lCent;
...
Klassen:
Softwarekomponenten
Paket-Name (z. B. java.awt.event) spiegelt Directory-Namen wider:
Æ /java/awt/event
public void init() { ...}
public void actionPerformed (...){...}
}
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Button
15
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
16
API: Applets
API-Klasse ‚Applet'
(Anzahl der Methoden)
An applet is a small program
that is intended not to be run
on its own, but rather to be
embedded inside another application.
Applet:
Java-Programm,
das von einem
Web-Browser
gestartet wird
Object
The Applet class must be the superclass
of any applet that is to be embedded in
a Web page or viewed by
the Java Applet viewer.
Component (>100)
Container (>50)
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class TempApplet extends Applet
implements ActionListener {
Panel (1)
// Convert from Fahrenheit to Centigrade
TextField tFahr;
Label lCent;
void init()
nicht nur
2 Methoden
Called by the browser or applet viewer to inform
this applet that it has been loaded into the system.
public void init() {...}
public void actionPerformed (...) ...
Applet (>20)
}
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
17
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Klasse Applet:
Methodenaufrufe
18
Initialisierung des Fensters
Applet-Fenster auf Bildschirm ausgeben (Anfangszustand)
public void init ( ) {
TempApplet
Start des Programms:
analog: main() bei Applikationen
1. Erzeugt (noch unsichtbar):
- aktives Textfeld (Eingabe)
- Label-Textfeld (Ausgabetext)
tFahr = new Textfield (10);
lCent = new Label (" I’ll tell...);
Woher
kommt
add()?
init()
actionPerformed()
Oberklasse
„Container“
(damit
Instanzmethode
von
}
TempApplet)
Reaktion auf Enter-Taste (Ereignis):
- Temperatur-Feld eingelesen
- umgerechneter Wert ausgegeben
add(new Label ("Please ..."));
2. Komponenten im
add(tFahr);
Applet-Fenster platziert
add(lCent);
tFahr.addActionListener(this);
3. Textfeld tFahr soll ’beobachtet’
werden: bei Enter-Taste soll
actionPerformed(…) gerufen
werden (Ereignisbehandlung)
Bestandteile einer graphischen Oberfläche: > 50 Klassen angeboten
z. B.: Textfield, Button, Label, Checkbox, Scrollbar ...
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
19
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
20
Reaktion auf Ereignisse (Event)
- Enter-Taste -
Wirkung von TempApplet
> appletviewer TempApplet.html
public void actionPerformed (...) {
Nach init():
Label-Textfeld (Ausgabetext)
double fahr = 0.0;
double cent = 0.0;
Einlesen aus Textfeld tFahr und
Transformation nach Integer
Aktives Textfeld (Eingabe)
fahr = Integer.parseInt(tFahr.getText());
Label-Textfeld (Ausgabetext)
cent = 5.0 * (fahr - 32) / 9.0;
Nach
actionPerformed(e):
Ausgabe des Resultats in das
Labelfeld lCent
lCent.setText (
fahr + " deg F is " + cent + " deg C ");
}
GUI:
als ADT/Objekte
aufgefasst
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
21
Ereignisbehandlung:
Woher kommt actionPerformed()?
zusammengesetzte Zeichenkette
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
22
API-Interface „ActionListener“
import java.awt.event.*;
The listener interface for receiving action events.
The class that is interested in processing an action event
implements this interface,
and the object created with that class
is registered with a component,
using the component's addActionListener method.
When the action event occurs,
that object's actionPerformed method is invoked.
Ereignisbehandlung
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class TempApplet extends Applet
implements ActionListener {
// Convert from Fahrenheit to Centigrade
TextField tFahr;
Label lCent;
public void init() { ...}
public void actionPerformed (...){...}
}
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
23
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
24
Objekt der Klasse TempApplet:
Aufruf der Methoden
Globale Variablen der Klasse
public class TempApplet ... {
Java-Interpreter
global:
- sichtbar in gesamter Klasse
- Lebensdauer = "gesamte" Zeit
TextField tFahr ;
Label LCent ;
bei Ereignis
(Enter-Taste)
public void init ( ) {
...
add (tFahr);
add(lCent);
}
zum Start
TempApplet
actionPerformed (ActionEvent e)
lesen
public void actionPerformed (...) {
double fahr = 0.0;
double cent = 0.0;
init ()
schreiben
initialisieren
fahr = Integer.parseInt (tFahr.gettext());
tFahr
100
lCent
100 deg is 37.7 deg C
}
}
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
25
Applet-Abarbeitung: Start
class TempApplet extends Applet ... {
init()
actionPerformed(...)
}
Web-Browser:
Internet Explorer
o.a.
4. Wirkung:
Dialogelemente
tFahr, lCent
auf Bildschirm
class TempApplet extends Applet ... {
init()
actionPerformed(ActionEvent e)
}
1. Ereignis: Enter-Taste u.a.
2. Hardware: registriert Ereignis
3. ... meldet Ereignis an Betriebssystem
3. ruft
auf
2. ruft
auf
26
Applet-Abarbeitung: Ereignis
TempApplet.html:
<applet ... "TempApplet.class" ...>
1. liest
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
4. Betriebssystem: meldet Ereignis dem
Java–Interpreter
JavaInterpreter
JavaInterpreter
- erzeugt Ereignis-Objekt e
Æ genauer: Kapitel III.15
- ruft auf: actionPerformed(e)
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
27
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
28
Wie wichtig sind Applets?
Bell, Parr: Java for Students, Prentice Hall:
"Because we see the Internet as being
tremendously important, we focus on applets here.
In addition, applets are simple to construct for the
beginners.
How to write applications, we explain in one of the
last chapters of this book" (3rd edition, 2002)
“In this book we concentrate on applications,
because we believe that this is the main way in
which Java is being used.
We explain how to run applets in the appendix"
(4th edition, 2005)
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
29
Herunterladen