From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100257.html | 441 +++++++++++++++++++++ 1 file changed, 441 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100257.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100257.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100257.html b/Master/Reference Architectures and Patterns/hjp5/html/k100257.html new file mode 100644 index 0000000..8c32362 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100257.html @@ -0,0 +1,441 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 40 - Applets II +
+
+ + + + +

40.3 Umwandlung einer Applikation in ein Applet

+
+ +
+ +

+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. + + + + +

40.3.1 Die Beispiel-Applikation

+ +

+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: + + +

+ + + + + +
+ +
+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
+ +Listing 40.5: Die Calculator-Applikation

+ +

+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.

+ + + + +
 Hinweis 
+
+ + + + +

40.3.2 Variante 1: Das Programm als Popup-Fenster

+ +

+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
+ +Listing 40.6: Ein Applikations-Applet im Popup-Fenster

+ +

+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
+ +Listing 40.7: HTML-Datei zum Aufruf des Beispiel-Applets

+ +

+Die vorgeschlagene Methode ist einfach umzusetzen, hat aber einige +Nachteile: +

+ + + + +

40.3.3 Variante 2: Erstellen eines gleichwertigen Applets

+ +

+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
+ +Listing 40.8: Das gleichwertige Calculator-Applet

+ +

+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
+ +Listing 40.9: HTML-Datei zum Aufruf des Beispiel-Applets

+
+ + + +
 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 +
+ + + -- cgit v1.2.3