14. applets - hu-berlin.de · java-applets können über das netz geladen und direkt vom browser...
TRANSCRIPT
![Page 1: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/1.jpg)
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
14. Applets
Java-Beispiel:TempApplet.javaTempApplet.html
Version: 27. Jan. 2016
![Page 2: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/2.jpg)
2K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Schwerpunkte
• Anwendungen und Applets
• Erstes Applet-Programm: Temperaturberechnung
![Page 3: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/3.jpg)
3K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Zwei Arten von Java–Programmen
• Applikationen / Anwendungen:
Direkte Ausführung mit dem Java-Interpreter(java Temperature)
• Applets:
Start mit Hilfe eines Web-Browsers(Firefox, Microsoft Internet Explorer)
bisher
neu
![Page 4: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/4.jpg)
4K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Java-Applets durch Web-Browser starten?
Hypertext Markup Language HTML zur Beschreibung von Webseiten erweitern
Im Detail: Kompilierte Java-Programme (Hallo.class) in Web-Seiten
einbinden (analog wie Bilder, Links, Videos …)
Web-Browser kennt Java-Interpreter: ruft ihn auf
Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden(.class-Programme
- nicht .java-Quellen)
Applets laufen in graphischer Oberfläche der Web-Seite(z.B. Firefox-Oberfläche)
![Page 5: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/5.jpg)
5K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
HTML-Dokumente: Bestandteile
• Text(mit Hervorhebungen: Farben, Unterstrich, Dicke, Größe)
• Verweise auf andere Dokumente:
• Bilder:
• Programme: laufen als Teil der Webseite
<a href="http://www.informatik.hu-berlin.de">
<img align=bottom height=20 src="bilder/earth2.gif" border=0>
<appletCODE="TempApplet.class" WIDTH=300 HEIGHT=100>
</applet>
![Page 6: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/6.jpg)
6K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
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>
![Page 7: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/7.jpg)
7K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Firefox: TempApplet.html geladen
Wirkung des Applet
![Page 8: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/8.jpg)
8K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Firefox: TempApplet.html geladen<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
![Page 9: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/9.jpg)
9K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Appletviewer: aktiviert Applets direkt
> appletviewer TempApplet.html
Applet testen- nicht gleich im
Browser das gesamte HTML-File
![Page 10: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/10.jpg)
10K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Applet-Beispiel: TempApplet.java
import java.awt.*;import java.applet.*;import java.awt.event.*;
public class TempApplet extends Appletimplements ActionListener {
// Convert from Fahrenheit to CentigradeTextField tFahr;Label lCent;
public void init() {// Create the TextField and the LabeltFahr = new TextField(10);lCent = new Label( "I’ll tell you what
that is in degrees C");
// Lay out the three Componentsadd(new Label("Please type the
temperature (deg F): "));add(tFahr);add(lCent);
// Register the Component ListenertFahr.addActionListener(this);
}
// Respond to Action Event:// typing in the tFahr TextFieldpublic void actionPerformed (ActionEvent e) {
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");
}}
3 PaketeMehrfach-vererbung
2 Dialog-elemente
2 Methoden
![Page 11: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/11.jpg)
11K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Vergleich: Applikation - Applet
Applikation Applet
Temperature
main()
TempApplet
init()
actionPerformed()
Start des Applet durch init()
![Page 12: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/12.jpg)
12K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Programmentwicklung: Anwendungen
Editor
Compiler
class Hello {... }
0 getstatic ...3 ldc ...
Java-Interpeter
File: Hello.java(Quellprogramm)
File: Hello.class(Objektprogramm)
Hello !
Ausgabe:
![Page 13: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/13.jpg)
13K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Programmentwicklung: Applets
Editor
TempApplet.java
Compiler
HTML:
<applet CODE="TempApplet.class". . . </applet>
TempApplet.class
Java-Interpreter
Web-BrowserAbarbeitung:
Wirkung:Webseiten-Oberfläche
![Page 14: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/14.jpg)
14K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
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
![Page 15: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/15.jpg)
15K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Importe
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
Programmierung der graphischenBenutzeroberfläche
(awt = abstract windowing toolkit)
Applet-Klasse u. a.
Ereignisbehandlung
import java.awt.*;import java.applet.*;import java.awt.event.*;
public class TempApplet extends Appletimplements ActionListener {
// Convert from Fahrenheit to CentigradeTextField tFahr;Label lCent;
public void init() { ...}public void actionPerformed (...){...}
}
drei Dienste benötigt:
![Page 16: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/16.jpg)
16K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Organisation des Java–API
Java - API
java.applet java.awt java.awt.event
Textfield
java.lang
...LabelButton
...
Pakete: Sammlung von Klassen
Klassen: Softwarekomponenten
Paket-Name (z. B. java.awt.event) spiegelt Directory-Namen wider:
/java/awt/event
![Page 17: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/17.jpg)
17K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
API: Applets(Anzahl der Methoden)
Object
Component (>100)
Container (>50)
Panel (1)
Applet (>20)
import java.awt.*;import java.applet.*;import java.awt.event.*;
public class TempApplet extends Appletimplements ActionListener {
// Convert from Fahrenheit to CentigradeTextField tFahr;Label lCent;
public void init() {...}public void actionPerformed (...) ...
}
Applet: Java-Programm, das von einemWeb-Browser gestartet wird
nicht nur 2 Methoden
![Page 18: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/18.jpg)
18K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
void init()Called by the browser or applet viewer to inform this applet that it has been loaded into the system.
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.
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.
![Page 19: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/19.jpg)
19K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Klasse Applet:Methodenaufrufe
TempApplet
init()
actionPerformed()
Start des Programms:analog: main() bei Applikationen
Reaktion auf Enter-Taste (Ereignis):- Temperatur-Feld eingelesen- umgerechneter Wert ausgegeben
![Page 20: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/20.jpg)
20K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Initialisierung des FenstersApplet-Fenster auf Bildschirm ausgeben (Anfangszustand)
public void init ( ) {
tFahr = new Textfield (10);lCent = new Label (" I’ll tell...);
add(new Label ("Please ..."));add(tFahr);add(lCent);
tFahr.addActionListener(this);}
Bestandteile einer graphischen Oberfläche: > 50 Klassen angebotenz. B.: Textfield, Button, Label, Checkbox, Scrollbar ...
1. Erzeugt (noch unsichtbar):- aktives Textfeld (Eingabe)- Label-Textfeld (Ausgabetext)
2. Komponenten imApplet-Fenster platziert
3. Textfeld tFahr soll ’beobachtet’ werden: bei Enter-Taste soll actionPerformed(…) gerufen werden (Ereignisbehandlung)
Woher kommt add()?
Oberklasse„Container“
(damit Instanz-methode
von TempApplet)
![Page 21: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/21.jpg)
21K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Wirkung von TempApplet> appletviewer TempApplet.html
Nach init():
Nach actionPerformed(e):
Label-Textfeld (Ausgabetext)
Aktives Textfeld (Eingabe)
Label-Textfeld (Ausgabetext)
![Page 22: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/22.jpg)
22K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Reaktion auf Ereignisse (Event)- Enter-Taste -
public void actionPerformed (...) {
double fahr = 0.0;double cent = 0.0;
fahr = Integer.parseInt(tFahr.getText());
cent = 5.0 * (fahr - 32) / 9.0;
lCent.setText ( fahr + " deg F is " + cent + " deg C ");
}
Einlesen aus Textfeld tFahr und Transformation nach Integer
Ausgabe des Resultats in das Labelfeld lCent
zusammengesetzte ZeichenketteGUI:
als ADT/Objekteaufgefasst
![Page 23: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/23.jpg)
23K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Ereignisbehandlung: Woher kommt actionPerformed()?
import java.awt.event.*;
import java.awt.*;import java.applet.*;import java.awt.event.*;
public class TempApplet extends Appletimplements ActionListener {
// Convert from Fahrenheit to CentigradeTextField tFahr;Label lCent;
public void init() { ...}public void actionPerformed (...){...}
}
Ereignisbehandlung
![Page 24: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/24.jpg)
24K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
API-Interface „ActionListener“
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.
![Page 25: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/25.jpg)
25K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Globale Variablen der Klasse
public class TempApplet ... {
TextField tFahr ;Label LCent ;
public void init ( ) {...add (tFahr);add(lCent);
}
public void actionPerformed (...) {double fahr = 0.0;double cent = 0.0;
fahr = Integer.parseInt (tFahr.gettext());}
}
global:- sichtbar in gesamter Klasse- Lebensdauer = "gesamte" Zeit
![Page 26: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/26.jpg)
26K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Objekt der Klasse TempApplet:Aufruf der Methoden
tFahr 100
lCent 100 deg is 37.7 deg C
actionPerformed (ActionEvent e)
init ()lesen schreiben
initialisieren
Java-Interpreter
zum Startbei Ereignis (Enter-Taste)
TempApplet
![Page 27: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/27.jpg)
27K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Applet-Abarbeitung: Start
class TempApplet extends Applet ... {init()actionPerformed(...)
}
TempApplet.html:<applet ... "TempApplet.class" ...>
Web-Browser:Internet Explorer
o.a.
Java-Interpreter
1. liest
2. ruftauf
3. ruftauf
4. Wirkung:Dialogelemente
tFahr, lCentauf Bildschirm
![Page 28: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/28.jpg)
28K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
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
Java-Interpreter
- erzeugt Ereignis-Objekt e genauer: Kapitel III.15
- ruft auf: actionPerformed(e)
![Page 29: 14. Applets - hu-berlin.de · Java-Applets können über das Netz geladen und direkt vom Browser ausgeführt werden (.class-Programme - nicht .java-Quellen) Applets laufen in graphischer](https://reader033.vdocuments.site/reader033/viewer/2022042921/5f6bc013e284c901a663de95/html5/thumbnails/29.jpg)
29K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
Wie wichtig sind Applets?
"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"
“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"
Bell, Parr: Java for Students, Prentice Hall:
(3rd edition, 2002)
(4th edition, 2005)