This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Es muß der Klassenname angegeben werden, und es wird erwartet, daß der Code der Klasse im selben Verzeichnis wie das html-Dokument steht, sofern das nicht durch codebase=<wo> spezifiziert ist. Zudem muß die Gr¨oße des Applets (in Punkten) angegeben werden. Nicht Java-f¨ahige Browser stellen den unter alt angegebenen Text dar. Man kann Parameter an das Applet geben, induziert durch das Tag param mit angegebenem Namen und Wert (als String). Die Klasse muß wie u¨ blich mit javac u¨ bersetzt werden. Ein Aufruf dieser Seite f¨uhrt dann zur Ausf¨uhrung des Programms. Java offeriert auch die M¨oglichkeit, sich die Funktion von Applets im Appletviewer anzusehen. Das geschieht durch den Aufruf java sun.applet.AppletViewer gefolgt vom Namen der html-Seite. 9.6 Good bye! 185 Das obige Applet ist sehr simpel, es stellt lediglich einen Text dar (impliziter Aufruf der ¨ paint Methode), sonst passiert nichts. Ublicherweise berechnen Applets w¨ahrend ihres gesamten Lebenszyklus etwas, daher werden meist komplexere Methoden implementiert. Der u¨ bliche Lebenszyklus von Applets wird durch die im Original noch leeren Methoden init (Initialisierung), start (Start beim neuen oder ersten Betrachten der Webseite), stop (beim Iconifizieren oder Verlassen der Webseite) und destroy (beim L¨oschen des Applet) bestimmt. In obigem Applet wird allerdings keine einzige dieser Methoden u¨ berschrieben, sondern lediglich die Graphikmethode paint ver¨andert und der Text auf die Seite geschrieben. Den Lebenszyklus eines Applets kann man gut in folgendem Beispiel sehen: import java.applet.Applet; import java.awt.Graphics; public class Lifecycle extends Applet { StringBuffer buffer; public void init() { buffer = new StringBuffer(); addItem("initializing... "); } public void start() { addItem("starting... "); } public void stop() { addItem("stopping... "); } public void destroy() { addItem("preparing for unloading..."); } void addItem(String newWord) { System.out.println(newWord); buffer.append(newWord); repaint(); } public void paint(Graphics g) { g.drawString(buffer.toString(), 5, 15); } } In einem gepufferten String werden hier pro Aufruf Messages hinzugef¨ugt und ausgegeben. Man sieht sehr sch¨on, wie sich bei jedem Iconifizieren und Deiconifizieren des Fensters der Text verl¨angert, da stop und start aufgerufen werden. Ein explizites stop und destroy ist insbesondere dann n¨otig, wenn man innerhalb eines Applets mehrere Threads startet – diese werden nicht automatisch gestoppt und verschwenden daher Speicherplatz oder Rechenzeit, auch wenn die Seite des Applets u¨ berhaupt nicht betrachtet wird. Applets sind sehr m¨achtig, man kann etwa: • pro Webseite mehrere Applets erzeugen und diese gegenseitig ansprechen, • von Webseiten Parameter einlesen, • mit einem Applet eine neue Webseite aufrufen, • auf Aktionen des Benutzers wie Eingaben oder Mousebewegungen reagieren, 10 LITERATUR 186 • Multimediadateien abspielen • u¨ ber awt oder swing Oberfl¨achen einbinden, • etc. Das soll hier nicht mehr Thema sein. Wir wollen lediglich zum Schluß das obige Applet Goodbye so ver¨andern, daß wir einen Knopf dr¨ucken k¨onnen, woraufhin sich der Text (auf dem Button) zu "Hello world!" a¨ ndert und umgekehrt. Dazu ben¨otigen wir ein Objekt Button, das von Java zur Verf¨ugung gestellt wird. Ein Listener horcht auf Ereignisse, etwa auf den Knopfdruck. Das Applet ist: import java.applet.*; import java.awt.*; import java.awt.event.*; public class goodbyebutton extends Applet implements ActionListener{ Button byebutton; private int status = 0; public void init(){ byebutton = new Button("Good bye!"); add(byebutton); byebutton.addActionListener(this); } public void actionPerformed(ActionEvent event){ if (event.getSource() == byebutton){ if (status == 0) byebutton.setLabel("Hello world!"); else byebutton.setLabel("Good bye!"); status = 1-status; repaint(); } } public void start(){ } public void stop(){ } public void destroy(){ } } 10 Literatur • Java-Online-Referenz: http://java.sun.com/j2se/1.4.2/download.html • Einf¨uhrungen mit Java: – Einf¨uhrung in die Informatik: Objektorientiert mit Java, Wolfgang K¨uchlin, Andreas Weber, Springer, mehrere Auflagen – Algorithmen in Java, Hans Werner Lang, Oldenbourg, 2003 187 – Java: eine Einf¨uhrung, Martin Schader, Lars Schmidt-Thieme, Springer, 2003 • Algorithmen-Klassiker: – Algorithmen und Datenstrukturen, Ottmann/Wiedmayer, Spektrum Verlag, mehrere Auflagen – Agorithms in C (Java), Sedgewick, Addison Wesley • Theoretische Informatik: Theoretische Informatik - eine problemorientierte Einf¨uhrung, Sperschneider/Hammer, Springer, 1996, online auf meiner homepage http://www.informatik.uni-osnabrueck.de/barbara/papers/pub hammer.html • Boolesche Algebren, Schaltalgebren, Zahldarstellung: – Grundz¨uge der Digitaltechnik, Hentschke, Teubner, 1988 – Informatik: Rechenanlagen, Hotz, Teubner, 1972 • Floating Point und Numerik: – Numerische Mathematik, Stoer, Springer, mehrere Auflagen – Numerical Recipes in C, Press et al., Cambridge, mehrere Auflagen • Parallele Prozesse, Betriebsysteme: – Modern Operating Systems, Tanenbaum, Prentice Hall – Concurrent Programming in Java, Lea, Addison-Wesley • Prolog und Logik: – Clause and Effect, Clocksin, Springer – Logic – A Foundation for Computer Science, Sperschneider/Antoniou, Addison-Wesley • Historie: – Der Computer Mein Lebenswerk, Zuse, Springer, 1984 – Vom Abakus zum Internet: die Geschichte der Informatik, Friedrich Naumann, Wissenschaftliche Buchgesellschaft, 2001 • Informationstheorie: Informations- und Kodierungstheorie, Herbert Klimant, Rudi Piotraschke, Dagmar Sch¨onefeld, Teubner, 2003 (2te Auflage) • Zwei sehr gute online-Skripten zur Informatik, es gibt viele weitere – aus Magdeburg: http://ivs.cs.uni-magdeburg.de/sw-eng/agruppe/lehre/ead.shtml – aus Princeton: http://www.cs.princeton.edu/introcs/home/ • und alles weitere k¨onnen Sie selbst im Internet suchen http://www.google.de