From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001
From: Sven Eisenhauer
+In der Praxis steht man manchmal vor der Aufgabe, eine bestehende
+Applikation in ein Applet umzuwandeln, etwa wenn ein vorhandendes
+Programm in eine HTML-Präsentation eingebunden werden soll. Da
+die Unterschiede zwischen Applets und Applikationen nicht so groß
+sind, kann diese Konvertierung - etwas Glück vorausgesetzt -
+mit überschaubarem Aufwand erledigt werden. Wir wollen in diesem
+Abschnitt die prinzipielle Vorgehensweise erläutern und auf einige
+der dabei möglicherweise auftretenden Besonderheiten eingehen.
+
+
+
+
+
+Als Beispiel soll ein sehr einfaches Programm verwendet werden. Es
+enthält ein Textfeld mit einem Zahlenwert und vier Buttons, mit
+denen die Zahl um 1, 10, 100 oder 1000 erhöht werden kann. Die
+Dialogelemente werden in einem Frame
+angeordnet, der von der main-Methode
+erzeugt wird. Seine Größe und Position werden ebenfalls
+explizit vorgegeben:
+
+
+
+
+
+
+ Titel
+ Inhalt
+ Suchen
+ Index
+ DOC
+ Handbuch der Java-Programmierung, 5. Auflage
+
+ <<
+ <
+ >
+ >>
+ API
+ Kapitel 40 - Applets II
+
+
+
+
+
+40.3 Umwandlung einer Applikation in ein Applet
+
+
+
+
+40.3.1 Die Beispiel-Applikation
+
+
+
+
+Listing 40.5: Die Calculator-Applikation
+
+
+
+
+
+001 /* Calculator.java */
+002
+003 import java.awt.*;
+004 import java.awt.event.*;
+005
+006 public class Calculator
+007 extends Frame
+008 implements ActionListener
+009 {
+010 private TextField tf;
+011
+012 public Calculator()
+013 {
+014 super("Calculator");
+015 addWindowListener(new WindowClosingAdapter(true));
+016 setBackground(Color.lightGray);
+017 setLayout(new GridLayout(2, 1));
+018 tf = new TextField("777");
+019 add(tf);
+020 Panel p = new Panel();
+021 for (int i = 1; i <= 1000; i *= 10) {
+022 Button b = new Button("+" + i);
+023 b.addActionListener(this);
+024 p.add(b);
+025 }
+026 add(p);
+027 }
+028
+029 public void actionPerformed(ActionEvent event)
+030 {
+031 String cmd = event.getActionCommand();
+032 int n1 = Integer.parseInt(tf.getText());
+033 int n2 = Integer.parseInt(cmd.substring(1));
+034 tf.setText("" + (n1 + n2));
+035 }
+036
+037 public static void main(String[] args)
+038 {
+039 Calculator calc = new Calculator();
+040 calc.setLocation(100, 100);
+041 calc.setSize(200, 85);
+042 calc.setVisible(true);
+043 }
+044 }
+
+
+Calculator.java
+
+Die Ausgabe des Programms nach dem Starten sieht so aus: +
+ +
+Abbildung 40.3: Die Calculator-Applikation
++
![]() |
+
+
+ +In vielen Beispielen in diesem Buch wird der Einfachheit halber die +in Abschnitt 23.2.4 vorgestellte +Klasse WindowClosingAdapter +verwendet, um einen Listener zum Schließen des Fensters zu registrieren. +Damit ein solches Beispiel sich kompilieren läßt, muss +die Datei WindowClosingAdapter.java im +aktuellen Verzeichnis vorhanden sein. Sie befindet sich auf der DVD +zum Buch oder in Listing 23.2. |
+
+
|
+![]() |
+
+Die einfachste Möglichkeit, die Applikation als Applet laufen +zu lassen, besteht darin, die aus Frame +abgeleitete Fensterklasse zu erhalten und aus dem Applet heraus als +eigenständiges Hauptfenster aufzurufen. Dazu schreiben wir ein +Hilfsapplet CalculatorApplet1, +das den ehemals in main +enthaltenen Code in der init-Methode +ausführt. Um das Fenster sichtbar zu machen, wird der Aufruf +von setVisible(true) in die +Methode start +verlegt, und in stop +wird setVisible(false) aufgerufen. +Das Fenster wird dadurch immer dann angezeigt, wenn die Seite mit +dem Applet im Browser sichtbar ist: + + +
+
+
+
+001 /* CalculatorApplet1.java */
+002
+003 import java.awt.*;
+004 import java.applet.*;
+005
+006 public class CalculatorApplet1
+007 extends Applet
+008 {
+009 Calculator calc;
+010
+011 public void init()
+012 {
+013 calc = new Calculator();
+014 calc.setLocation(100, 100);
+015 calc.setSize(200, 130);
+016 }
+017
+018 public void start()
+019 {
+020 calc.setVisible(true);
+021 }
+022
+023 public void stop()
+024 {
+025 calc.setVisible(false);
+026 }
+027 }
+
+ |
++CalculatorApplet1.java | +
+Das Applet kann mit folgender HTML-Datei im Browser angezeigt werden: + + +
+
+
++001 <html> +002 <head> +003 <title>CalculatorApplet1</title> +004 </head> +005 <body> +006 +007 <h1>CalculatorApplet1</h1> +008 +009 <applet code="CalculatorApplet1.class" width=200 height=100> +010 CalculatorApplet1 +011 </applet> +012 +013 </body> +014 </html>+ + |
++CalculatorApplet1.html | +
+Die vorgeschlagene Methode ist einfach umzusetzen, hat aber einige +Nachteile: +
+Um den eigentlichen Vorteil von Applets, das Einbetten von +laufenden Programmen in HTML-Seiten, ausnutzen zu können, müssen +wir etwas mehr Aufwand treiben. Wir wollen uns dazu die Schritte ansehen, +um aus unserer Beispielapplikation ein gleichwertiges Applet zu machen: +
+Nachdem die Schritte beendet wurden, steht nun (wenigstens in diesem +nicht sehr komplexen Beispiel) ein gleichwertiges Applet zur Verfügung: + + +
+
+
+
+001 /* CalculatorApplet2.java */
+002
+003 import java.awt.*;
+004 import java.awt.event.*;
+005 import java.applet.*;
+006
+007 public class CalculatorApplet2
+008 extends Applet
+009 implements ActionListener
+010 {
+011 private TextField tf;
+012
+013 public void init()
+014 {
+015 setBackground(Color.lightGray);
+016 setLayout(new GridLayout(2, 1));
+017 tf = new TextField("777");
+018 add(tf);
+019 Panel p = new Panel();
+020 for (int i = 1; i <= 1000; i *= 10) {
+021 Button b = new Button("+" + i);
+022 b.addActionListener(this);
+023 p.add(b);
+024 }
+025 add(p);
+026 }
+027
+028 public void actionPerformed(ActionEvent event)
+029 {
+030 String cmd = event.getActionCommand();
+031 int n1 = Integer.parseInt(tf.getText());
+032 int n2 = Integer.parseInt(cmd.substring(1));
+033 tf.setText("" + (n1 + n2));
+034 }
+035 }
+
+ |
++CalculatorApplet2.java | +
+Nun kann die HTML-Datei erstellt und das Applet aufgerufen werden: + + +
+
+
++001 <html> +002 <head> +003 <title>CalculatorApplet2</title> +004 </head> +005 <body> +006 +007 <h1>CalculatorApplet2</h1> +008 +009 <applet code="CalculatorApplet2.class" width=200 height=85> +010 CalculatorApplet2 +011 </applet> +012 +013 </body> +014 </html>+ + |
++CalculatorApplet2.html | +
| Titel + | Inhalt + | Suchen + | Index + | DOC + | Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 + |
| << + | < + | > + | >> + | API + | © 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de + |