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/k100256.html | 241 +++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100256.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100256.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100256.html b/Master/Reference Architectures and Patterns/hjp5/html/k100256.html new file mode 100644 index 0000000..c6e7a3f --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100256.html @@ -0,0 +1,241 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 40 - Applets II +
+
+ + + + +

40.2 Kommunikation zwischen Applets

+
+ +
+ +

+Wenn mehr als ein Applet auf einer Webseite platziert wurde, ist es +mitunter wünschenswert, dass die Applets miteinander kommunizieren. +Da Applets gewöhnliche Java-Objekte sind, ist es prinzipiell +nicht schwer, aus einem Applet heraus öffentliche Methoden oder +Membervariablen eines anderen Applets aufzurufen. Dazu ist es allerdings +erforderlich, dass ein Applet in den Besitz einer Instanz eines anderen +Applets gelangt. Der Applet-Kontext stellt dazu zwei Methoden zur +Verfügung: +

+ + + + + +
+ +
+public Applet getApplet(String name)
+
+public Enumeration getApplets()
+
+
+
+java.applet.AppletContext
+ +

+getApplets +liefert eine Enumeration +mit allen Applets, die sich auf derselben Seite befinden. Sofern sie +für den Aufrufer unterscheidbar sind, kann daraus das gewünschte +Applet ausgewählt werden. getApplet +liefert dagegen genau das Applet mit dem als Parameter angegebenen +Namen. Dieser muss dem NAME-Parameter +des gewünschten Applets entsprechen (siehe Abschnitt 39.2.2). + +

+Wir wollen uns ein einfaches Beispiel für die Kommunikation von +drei Applets, die sich auf derselben Webseite befinden, ansehen. Dazu +soll eine Klasse ChgNextApplet +geschrieben werden, die den zur Verfügung stehenden Platz in +der aktuellen Hintergrundfarbe einfärbt. Nach einem Mausklick +soll die Hintergrundfarbe eines anderen, mit dem NEXT-Parameter spezifizierten, +Applets verändert werden. + +

+Der Code für die Applet-Klasse kann wie folgt realisiert werden: + + +

+ + + + + +
+ +
+001 /* ChgNextApplet.java */
+002 
+003 import java.awt.*;
+004 import java.awt.event.*;
+005 import java.applet.*;
+006 import java.util.*;
+007 
+008 public class ChgNextApplet
+009 extends Applet
+010 {
+011   private String next;
+012 
+013   public void init()
+014   {
+015     next = getParameter("next");
+016     setBackground(Color.red);
+017     addMouseListener(
+018       new MouseAdapter()
+019       {
+020         public void mouseClicked(MouseEvent event)
+021         {
+022           if (next != null) {
+023             Applet applet = getAppletContext().getApplet(next);
+024             if (applet != null) {
+025               int red   = (int)(Math.random() * 256);
+026               int green = (int)(Math.random() * 256);
+027               int blue  = (int)(Math.random() * 256);
+028               applet.setBackground(new Color(red, green, blue));
+029               applet.repaint();
+030             }
+031           }
+032         }
+033       }
+034     );
+035   }
+036 
+037   public void paint(Graphics g)
+038   {
+039     g.drawString("Change " + next, 5, 20);
+040   }
+041 }
+
+
+ChgNextApplet.java
+ +Listing 40.3: Die Klasse ChgNextApplet

+ +

+In init +wird der NEXT-Parameter ausgelesen und einer Membervariable zugewiesen +und die Hintergrundfarbe zunächst auf rot gesetzt. Anschließend +wird ein MouseListener +registriert, der bei jedem Mausklick das NEXT-Applet beschafft, seinen +Hintergrund in einer zufällig ausgewählten Farbe einfärbt +und repaint +aufruft, um es neu darzustellen. + +

+Wir wollen nun eine HTML-Seite anlegen, die drei Instanzen von ChgNextApplet +erzeugt. Sie sollen die Namen »A1«, »A2« und »A3« +erhalten und sich gegenseitig als NEXT-Applet registrieren. Ein Mausklick +auf »A1« ändert die Farbe von »A2«, ein Klick +auf »A2« die von »A3« und ein Klick auf »A3« +die von »A1«. Dazu kann folgende Datei ThreeApplets.html +verwendet werden: + + +

+ + + + + +
+ +
+001 <html>
+002 <head>
+003 <title>ThreeApplets</title>
+004 </head>
+005 <body>
+006 
+007 A1:
+008 <applet code="ChgNextApplet.class" width=90 height=30 name="A1">
+009 <param name="next" value="A2">
+010 Applet A1
+011 </applet>
+012 
+013 <p>
+014 A2:
+015 <applet code="ChgNextApplet.class" width=90 height=30 name="A2">
+016 <param name="next" value="A3">
+017 Applet A2
+018 </applet>
+019 
+020 <p>
+021 A3:
+022 <applet code="ChgNextApplet.class" width=90 height=30 name="A3">
+023 <param name="next" value="A1">
+024 Applet A3
+025 </applet>
+026 
+027 </body>
+028 </html>
+
+
+ThreeApplets.html
+ +Listing 40.4: Die HTML-Datei mit den drei kommunizierenden Applets

+ +

+Die HTML-Seite kann nun im Browser aufgerufen werden. Nach einigen +Mausklicks könnte die Darstellung so aussehen: +

+ + +

+ +

+Abbildung 40.2: Die drei kommunizierenden 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