| Axel Rogat |
| Objektorientiertes Programmieren mit C++ und JAVA |
|   |
29.4: Browser-Zusammenarbeit
| Kapitel 29 |
30.1: Graphics 
|
|   |
|   | 29.5 Kommunikation zwischen Applets |   |
|   |
Wenn mehrere Applets im selben HTML-Dokument erscheinen, laufen sie "gleichzeitig". Im Browser werden sie in dieselbe Seite integriert, der Appletviewer erzeugt ein eigenes Fenster für jedes Applet. Diese Applets können miteinander kommunizieren. Die grundlegenden Methoden dazu sind folgende (aus AppletContext):
Wenn danach nun die Applets gegenseitig ihre Referenzen kennen, können sie einfach dadurch miteinander kommunizieren, daß sie Methoden der jeweils anderen Applets aufrufen.
Das Interface Enumeration stammt aus java.util und dient insbesondere bei Collections als Ersatz für die fehlende Möglichkeit, sich elementweise zu durchlaufen:
Vorsicht: Browser legen meist zunächst alle Applet-Objekte zur aktuellen Seite an und initialisieren sie danach. Die Enumeration enthält dann alle Applets, diese brauchen aber noch nicht initialisiert zu sein. Beim Appletviewer ist noch nicht einmal garantiert, daß (zu Beginn) die Enumeration schon vollständig ist. Wenn man die Anzahl aller Applets im voraus kennt, sollte man Code einbauen, der darauf wartet, daß auch alle erzeugt (und ggf. initialisiert) sind.
Beispiel: Wir plazieren 4 Applets unserer Klasse commtest im Format 2×2 auf eine HTML-Seite. Wenn in ein Applet mit der Maus geklickt wird, wird nicht in das getroffene, sondern in das nächste Applet an der Stelle des Mausklicks ein schwarzer Fleck gemalt.
Enumerations, wie getApplets() eine liefert, können nur einmal durchlaufen werden. Daher füllen wir sie in einen Vector um. Bei der Gelegenheit wandeln wir die gelieferten Objekte mit einem Cast in commtest um. Falls das Applet dann keines von unserer Klasse ist, wird eine ClassCastException ausgelöst. Solch ein fremdes Applet nehmen wir nicht in den Vector auf.
Das Auswerten des Mausklicks geschieht in der Methode mouseDown(), genaueres dazu im Kapitel über Events. Es wird dann die Methode drawSpot() des nächsten Applets aufgerufen.
Ein passendes HTML-Dokument ist folgendes:
<CENTER><TABLE><TR> <TD><APPLET CODE=commtest WIDTH=128 HEIGHT=128></APPLET></TD> <TD><APPLET CODE=commtest WIDTH=128 HEIGHT=128></APPLET></TD> </TR><TR> <TD><APPLET CODE=commtest WIDTH=128 HEIGHT=128></APPLET></TD> <TD><APPLET CODE=commtest WIDTH=128 HEIGHT=128></APPLET></TD> </TR></TABLE></CENTER>
</BODY> </HTML>
|   |
29.4: Browser-Zusammenarbeit
| Startseite |
30.1: Graphics 
|
|   |