import java.applet. - Institut für Informatik

Werbung
14. Applets
Java-Beispiel:
TempApplet.java
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
Version: 2. Feb. 2007
Schwerpunkte
• Kommandozeilengesteuerte oder
graphische Nutzeroberfläche
• Anwendungen und Applets
• Erstes Applet-Programm:
Temperaturberechnung
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
2
Zwei Arten von Java–Programmen
• Applikationen / Anwendungen:
Direkte Ausführung mit dem Java-Interpreter
(java Temperature)
• Applets:
Start mit Hilfe eines Web-Browsers
(Firefox, Mozilla, Microsoft Internet Explorer)
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
3
Java-Applets durch Web-Browser starten?
Î HTML erweitern
Im Detail:
Æ Kompilierte Java-Programme (Hallo.class) in Web-Seiten
einbinden
Æ Web-Browser kennt Java-Interpreter: ruft ihn auf
Æ Java-Applets können über das Netz geladen und direkt
vom Browser ausgeführt werden
(virtuelle .class-Programme
- nicht .java-Quellen)
Æ Applets laufen in graphischer Oberfläche der Web-Seite
(z. B. Internet Explorer-Oberfläche)
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
4
HTML-Dokumente: Bestandteile
• Text
(mit Hervorhebungen: Farben, Unterstich, Dicke, Größe)
• 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, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
5
Beispiel: TempApplet.html
<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>
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
6
Firefox: TempApplet.html geladen
Wirkung des Applet
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
7
Appletviewer: aktiviert Applets direkt
> appletviewer TempApplet.html
Applet testen
- Nicht gleich das
gesamte HTML-File
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
8
Applet-Beispiel: TempApplet.java
3 Pakete
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
Temp
A
Mehrfachvererbung
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");
2 Dialogelemente
// Convert from Fahrenheit to Centigrade
TextField tFahr;
Label lCent;
// Lay out the three Components
add(new Label("Please type the
temperature (deg F): "));
add(tFahr);
add(lCent);
.java
// Respond to Action Event:
// typing in the tFahr TextField
public void actionPerformed (ActionEvent e) {
public class TempApplet extends Applet
implements ActionListener {
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");
pplet
}
}
2 Methoden
// Register the Component Listener
tFahr.addActionListener(this);
}
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
9
Vergleich: Applikation - Applet
Applikation
Applet
Temperature
TempApplet
main()
init()
actionPerformed()
per
m
e
T
va
a
j
.
e
atur
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
Tem
pApp
let.ja
va
10
Programmentwicklung: Applets
Editor
TempApplet.java
HTML:
<applet CODE="TempApplet.class"
. . . </applet>
Compiler
TempApplet.class
Abarbeitung:
JavaInterpreter
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
Web-Browser
Wirkung:
Web-Oberfläche
11
Erklärung zum Temperatur-Applet
1. Importe
2. API-Struktur: API - Pakete - Klassen
3. Klasse Applet
4. Initialisierung des Fensters
5. Reaktion auf Ereignisse
6. globale und lokale Variablen
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
12
Importe
import java.awt.*;
Programmierung der graphischen
Benutzeroberfläche
(awt = abstract windowing toolkit)
import java.applet.*;
Applet-Klasse u. a.
import java.awt.event.*;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class TempApplet extends Applet
implements ActionListener {
Ereignisbehandlung
// Convert from Fahrenheit to Centigrade
TextField tFahr;
Label lCent;
public void init() { ...}
public void actionPerformed (...){...}
}
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
13
Organisation des Java–API
Java - API
java.applet
Textfield
java.awt
Button
java.awt.event
Label
Pakete:
Sammlung von Klassen
...
java.lang
...
Klassen:
Softwarekomponenten
Paket-Name (z. B. java.awt.event) spiegelt Directory-Namen wider:
Æ /java/awt/event
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
14
API: Applets
(Anzahl der Methoden)
Applet:
Java-Programm,
das von einem
Web-Browser
gestartet wird
Object
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;
Applet (>20)
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
public void init() {
...
nicht nur
2 Methoden
15
API-Klasse ‚Applet'
An applet is a small program
that is intended not to be run
on its own, but rather to be
embedded inside another application.
void init()
Called by the browser or applet viewer to inform
this applet that it has been loaded into the system.
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
16
Klasse Applet:
Methodenaufrufe
TempApplet
Start des Programms:
analog: main() bei Applikationen
init()
actionPerformed()
Reaktion auf Enter-Taste (Ereignis):
- Temperatur-Feld eingelesen
- umgerechneter Wert ausgegeben
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
17
Initialisierung des Fensters
Applet-Fenster auf Bildschirm ausgeben (Anfangszustand)
public void init ( ) {
1. Erzeugt (noch unsichtbar):
- aktives Textfeld (Eingabe)
- Label-Textfeld (Ausgabetext)
tFahr = new Textfield (10);
lCent = new Label (" I’ll tell...);
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
z. B.: Textfield, Button, Label, Checkbox, Scrollbar ...
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
18
Wirkung von TempApplet
> appletviewer TempApplet.html
Nach init():
Label-Textfeld (Ausgabetext)
Aktives Textfeld (Eingabe)
Label-Textfeld (Ausgabetext)
Nach
actionPerformed(e):
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
19
Reaktion auf Ereignisse (Event)
- Enter-Taste public void actionPerformed (...) {
double fahr = 0.0;
double cent = 0.0;
Einlesen aus Textfeld tFahr und
Transformation nach Integer
fahr = Integer.parseInt(tFahr.getText());
cent = 5.0 * (fahr - 32) / 9.0;
Ausgabe des Resultats in
das Labelfeld lCent
lCent.setText (
fahr + " deg F is " + cent + " deg C ");
}
GUI:
als ADT
aufgefasst
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
zusammengesetzte Zeichenkette
20
Variablen:
global in Klasse - lokal in Methode
public class TempApplet ... {
TextField tFahr ;
Label LCent ;
public void init ( ) {
...
add (tFahr);
add(lCent);
}
global:
- sichtbar in gesamter Klasse
- Lebensdauer = "gesamte" Zeit
lokal:
- sichtbar nur in Methode
- Lebensdauer =
Abarbeitungszeit der Methode
public void actionPerformed (...) {
double fahr = 0.0;
double cent = 0.0;
fahr = Integer.parseInt (tFahr.gettext());
}
}
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
21
Objekt der Klasse TempApplet:
Aufruf der Methoden
Java-Interpreter
bei Ereignis
(Enter-Taste)
zum Start
TempApplet
actionPerformed (ActionEvent e)
lesen
init ()
schreiben
initialisieren
tFahr
100
lCent
100 deg is 37.7 deg C
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
22
Applet-Abarbeitung: Start
class TempApplet extends Applet ... {
init()
actionPerformed(...)
}
4. Wirkung:
Dialgelemente
tFahr, lCent
auf Bildschirm
TempApplet.html:
<applet ... "TempApplet.class" ...>
3. ruft
auf
1. liest
Web-Browser:
Internet Explorer
o.a.
2. ruft
auf
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
JavaInterpreter
23
Applet-Abarbeitung: Ereignis
class TempApplet extends Applet ... {
init()
actionPerformed(ActionEvent e)
}
1. Ereignis: Enter-Taste u.a.
2. Hardware: registriert Ereignis
3. ... meldet Ereignis an Betriebssystem
4. Betriebssystem: meldet Ereignis dem
Java–Interpreter
JavaInterpreter
- erzeugt Ereignis-Objekt e
- ruft auf: actionPerformed(e)
K. Bothe, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
24
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, Inst. f. Informatik, HU Berlin, PI1, WS 2006/07
25
Herunterladen