29
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 14. Applets Java-Beispiel: TempApplet.java TempApplet.html Version: 27. Jan. 2016

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

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)