Java-Applet-Grundlagen

Ein Applet ist ein Java-Programm. Es läuft im Allgemeinen in einem Java-unterstützten Webbrowser. Da es vollständige Java-API-Unterstützung bietet, ist das Applet eine vollwertige Java-Anwendung.

Die folgenden Punkte sind die wichtigen Unterschiede zwischen einer eigenständigen Java-Anwendung und einem Applet-Programm:

  • In Java erbt eine Applet-Klasse von der Klasse java.applet.Applet.
  • Die Applet-Klasse definiert main() nicht, daher ruft ein Applet-Programm die Methode main() nicht auf.
  • Applets sind dafür ausgelegt, in eine HTML-Seite eingebettet zu werden.
  • Wenn ein Benutzer eine HTML-Seite mit einem Applet aufruft, wird der Code des Applets auf den Rechner des Benutzers heruntergeladen.
  • Um ein Applet anzuzeigen, ist eine JVM erforderlich. Die JVM kann ein Web-Browser-Plugin oder eine eigenständige Laufzeitumgebung sein.
  • Die JVM auf dem Rechner des Benutzers erstellt eine Instanz der Applet-Klasse und ruft verschiedene Methoden im Lebenszyklus des Applets auf.
  • Für Applets gelten strenge Sicherheitsregeln, die von Web-Browsern durchgesetzt werden. Der Sicherheitsmechanismus von Applets wird Sandbox-Sicherheit genannt.
  • Weitere vom Applet benötigte Klassen können in Form von Java-Archive-Dateien (JAR) heruntergeladen werden.

Lebenszyklus eines Applets

Die vier Methoden in der Applet-Klasse bieten ein Framework, auf dem Sie kleine Applets entwickeln können:

  • init: Der Zweck dieser Methode besteht darin, die für Ihr Applet erforderliche Initialisierung bereitzustellen. Diese Methode wird aufgerufen, nachdem die param-Tags innerhalb des Applet-Tags verarbeitet wurden.
  • start:Nachdem der Browser die init-Methode aufgerufen hat, wird diese Methode automatisch aufgerufen. Diese Methode wird immer dann aufgerufen, wenn der Benutzer von einer anderen Seite zur Seite mit dem Applet zurückkehrt.
  • stop:Diese Methode wird automatisch aufgerufen, wenn der Benutzer die Seite mit dem Applet verlässt. Daher kann diese Methode im selben Applet wiederholt aufgerufen werden.
  • destroy: Diese Methode wird nur aufgerufen, wenn der Browser ordnungsgemäß geschlossen wird. Da Applets nur auf HTML-Seiten gültig sind, sollten Sie keine Ressourcen zurücklassen, nachdem der Benutzer die Seite mit dem Applet verlassen hat.
  • paint:Diese Methode wird unmittelbar nach der start()-Methode aufgerufen oder wenn das Applet im Browser neu gezeichnet werden muss. Die paint()-Methode ist tatsächlich von java.awt geerbt.

"Hello, World"-Applet:

Nachfolgend ist ein einfaches Applet-Programm, HelloWorldApplet.java:

Code der Datei HelloWorldApplet.java:

import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet { public void paint (Graphics g) { g.drawString ("Hello World", 25, 50); } }

Diese import-Anweisungen importieren die folgenden Klassen in unsere Applet-Klasse:

java.applet.Applet. java.awt.Graphics.

Ohne diese Import-Anweisungen kann der Java-Compiler die Klassen Applet und Graphics nicht erkennen.


Applet-Klasse

Jedes Applet ist eine Unterklasse der Klasse java.applet.Applet. Die Basisklasse Applet stellt Methoden bereit, die Unterklassen aufrufen können, um Browser-Kontextinformationen und Dienste zu erhalten.

Diese Methoden führen Folgendes aus:

  • Applet-Parameter abrufen
  • Die Netzwerkadresse der HTML-Datei abrufen, die das Applet enthält
  • Die Netzwerkadresse des Applet-Klassenverzeichnisses abrufen
  • Browser-Statusinformationen ausgeben
  • Ein Bild abrufen
  • Einen Audioclip abrufen
  • Einen Audioclip abspielen
  • Dieses Applet skalieren

Darüber hinaus stellt die Klasse Applet eine Schnittstelle für den Viewer oder Browser bereit, um Applet-Informationen zu erhalten und die Ausführung des Applets zu steuern.

Der Betrachter kann:

  • Informationen über den Applet-Autor, die Version und das Urheberrecht anfordern
  • Beschreibungen der vom Applet erkannten Parameter anfordern
  • Das Applet initialisieren
  • Das Applet zerstören
  • Die Ausführung des Applets starten
  • Die Ausführung des Applets anhalten

Die Applet-Klasse bietet Standardimplementierungen für diese Methoden, die bei Bedarf überschrieben werden können.

Das "Hello, World"-Applet ist nach dem Standard geschrieben. Die einzige überschriebene Methode ist die paint-Methode.


Aufrufen eines Applets

Ein Applet ist ein Java-Programm. Es läuft im Allgemeinen in einem Java-unterstützten Webbrowser. Da es vollständige Java-API-Unterstützung bietet, ist das Applet eine vollwertige Java-Anwendung.

Das <applet>-Tag ist die Grundlage für das Einbetten von Applets in HTML-Dateien. Das Folgende ist ein Beispiel für das Aufrufen eines "Hello World"-Applets:

HTML-Code:

<html> <title>Das Hello, World Applet</title> <hr> <applet code="HelloWorldApplet.class" width="320" height="120"> Wenn Ihr Browser Java-fähig wäre, würde hier eine "Hello, World" Meldung erscheinen. </applet> <hr> </html>

Hinweis:Sie können das HTML-Applet-Tag nachschlagen, um mehr darüber zu erfahren, wie man Applets aus HTML aufruft.

Die Attribute des <applet>-Tags geben die auszuführende Applet-Klasse an. width und height werden verwendet, um die Anfangsgröße des Ausführungsbereichs des Applets festzulegen. Das Applet muss mit dem </applet>-Tag geschlossen werden.

Wenn das Applet Parameter akzeptiert, müssen die Parameterwerte in <param>-Tags angegeben werden, die zwischen <applet> und </applet> platziert werden. Der Browser ignoriert Text und andere Tags zwischen den Applet-Tags.

Browser, die Java nicht unterstützen, können <applet> und </applet> nicht ausführen. Daher ist alles, was zwischen den Tags angezeigt wird und nichts mit dem Applet zu tun hat, in Browsern sichtbar, die Java nicht unterstützen.

Der Viewer oder Browser sucht den kompilierten Java-Code am Dokumentort. Um den Dokumentpfad anzugeben, verwenden Sie das codebase-Attribut des <applet>-Tags.

Wie unten gezeigt:

<applet codebase="http://amrood.com/applets"
code="HelloWorldApplet.class" width="320" height="120">

Wenn sich das Applet in einem anderen Paket als dem Standardpaket befindet, muss das Paket im code-Attribut angegeben werden, zum Beispiel:

<applet code="mypackage.subpackage.TestApplet.class"
           width="320" height="120">

Applet-Parameter abrufen

Das folgende Beispiel zeigt, wie ein Applet auf Parameter reagiert, die in einer Datei angegeben sind. Das Applet zeigt ein schwarzes Schachbrettmuster und eine zweite Farbe an.

Die zweite Farbe und die Größe jeder Spalte werden durch die Applet-Parameter im Dokument angegeben.

CheckerApplet erhält seine Parameter in der init()-Methode. Es kann seine Parameter auch in der paint()-Methode erhalten. Es ist jedoch praktisch und effizient für das Applet, die Werte beim Start zu beziehen und die Einstellungen zu speichern, anstatt die Werte bei jeder Aktualisierung zu beziehen.

Der Applet-Viewer oder Browser ruft die init()-Methode jedes Mal auf, wenn das Applet ausgeführt wird. Nach dem Laden des Applets ruft der Viewer sofort die init()-Methode auf (Applet.init() bewirkt nichts). Überschreiben Sie die Standardimplementierung dieser Methode, um benutzerdefinierten Initialisierungscode hinzuzufügen.

Die Methode Applet.getParameter() ruft den Parameterwert über den Parameternamen ab. Wenn der erhaltene Wert eine Zahl oder andere Nicht-Zeichendaten ist, muss er aus dem String-Typ geparst werden.

Das folgende Beispiel ist eine Modifikation von CheckerApplet.java:

Code der Datei CheckerApplet.java:

import java.applet.*; import java.awt.*; public class CheckerApplet extends Applet { int squareSize = 50;//Standardgröße initialisieren public void init () {} private void parseSquareSize (String param) {} private Color parseColor (String param) {} public void paint (Graphics g) {} }

Nachfolgend sind die init()-Methode und die private parseSquareSize()-Methode der Klasse CheckerApplet aufgeführt:

public void init () { String squareSizeParam = getParameter ("squareSize"); parseSquareSize (squareSizeParam); String colorParam = getParameter ("color"); Color fg = parseColor (colorParam); setBackground (Color.black); setForeground (fg); } private void parseSquareSize (String param) { if (param == null) return; try { squareSize = Integer.parseInt (param); } catch (Exception e) { //Standardwert beibehalten } }

Das Applet ruft parseSquareSize() auf, um den squareSize-Parameter zu parsen. parseSquareSize() ruft die Bibliotheksmethode Integer.parseInt() auf, die einen String in eine Ganzzahl parst. Wenn der Parameter ungültig ist, wirft Integer.parseInt() eine Exception.

Daher fängt die Methode parseSquareSize() ebenfalls Ausnahmen ab und erlaubt es dem Applet nicht, ungültige Eingaben zu akzeptieren.

Das Applet ruft die Methode parseColor() auf, um den Parameter color in einen Color-Wert zu parsen. Die Methode parseColor() führt eine Reihe von Zeichenkettenvergleichen durch, um den Parameterwert mit vordefinierten Farbnamen abzugleichen. Sie müssen diese Methoden implementieren, damit das Applet funktioniert.


Angeben von Applet-Parametern

Das folgende Beispiel ist eine HTML-Datei, die die Klasse CheckerApplet einbettet. Die HTML-Datei gibt zwei Parameter für das Applet an, indem sie das <param>-Tag verwendet.

<html> <title>Schachbrett-Applet</title> <hr> <applet code="CheckerApplet.class" width="480" height="320"> <param name="color" value="blue"> <param name="squaresize" value="30"> </applet> <hr> </html>

Hinweis:Bei Parameternamen spielt die Groß-/Kleinschreibung keine Rolle.


Konvertieren einer Anwendung in ein Applet

Die Umwandlung einer grafischen Java-Anwendung (d. h. einer Anwendung, die AWT verwendet und mit dem java-Programmstarter gestartet wird) in ein Applet, das in eine Webseite eingebettet ist, ist einfach.

Die folgenden Schritte dienen der Umwandlung einer Anwendung in ein Applet:

  • Schreiben Sie eine HTML-Seite, die ein Tag enthält, mit dem der Applet-Code geladen werden kann.
  • Schreiben Sie eine Unterklasse der Klasse JApplet und deklarieren Sie die Klasse als public. Andernfalls kann das Applet nicht geladen werden.
  • Entfernen Sie die main()-Methode der Anwendung. Erstellen Sie kein Frame-Fenster für die Anwendung, da Ihre Anwendung im Browser angezeigt werden soll.
  • Verschieben Sie den Initialisierungscode aus dem Konstruktor des Frame-Fensters in der Anwendung in die init()-Methode des Applets. Sie müssen das Applet-Objekt nicht explizit konstruieren; der Browser instanziiert ein Objekt durch Aufruf der init()-Methode.
  • Entfernen Sie den Aufruf der setSize()-Methode. Bei einem Applet wird die Größe bereits durch die Parameter width und height in der HTML-Datei festgelegt.
  • Entfernen Sie den Aufruf der setDefaultCloseOperation()-Methode. Ein Applet kann nicht geschlossen werden; es wird beendet, wenn der Browser beendet wird.
  • Wenn die Anwendung die setTitle()-Methode aufruft, entfernen Sie diesen Aufruf. Ein Applet kann keine Titelleiste haben. (Natürlich können Sie die Webseite selbst mit dem HTML-Tag <title> benennen.)
  • Rufen Sie setVisible(true) nicht auf; das Applet wird automatisch angezeigt.

Ereignisbehandlung

Die Klasse Applet erbt viele Ereignisbehandlungsmethoden von der Klasse Container. Die Klasse Container definiert mehrere Methoden wie processKeyEvent() und processMouseEvent() zur Behandlung bestimmter Ereignistypen sowie eine universelle Ereignismethode namens processEvent.

Um auf ein Ereignis zu reagieren, muss das Applet die entsprechende Ereignisbehandlungsmethode überschreiben.

Code der Datei ExampleEventHandling.java:

import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.applet.Applet; import java.awt.Graphics; public class ExampleEventHandling extends Applet implements MouseListener { StringBuffer strBuffer; public void init() { addMouseListener(this); strBuffer = new StringBuffer(); addItem("Initialisieren des Applets "); } public void start() { addItem("Starten des Applets "); } public void stop() { addItem("Anhalten des Applets "); } public void destroy() { addItem("Entladen des Applets"); } void addItem(String word) { System.out.println(word); strBuffer.append(word); repaint(); } public void paint(Graphics g) { //Zeichnen Sie ein Rechteck um den Anzeigebereich des Applets. g.drawRect(0, 0, getWidth() - 1, getHeight() - 1); //Die Zeichenkette innerhalb des Rechtecks anzeigen. g.drawString(strBuffer.toString(), 10, 20); } public void mouseEntered(MouseEvent event) { } public void mouseExited(MouseEvent event) { } public void mousePressed(MouseEvent event) { } public void mouseReleased(MouseEvent event) { } public void mouseClicked(MouseEvent event) { addItem("Maus geklickt! "); } }

Rufen Sie das Applet wie folgt auf:

<html> <title>Ereignisbehandlung</title> <hr> <applet code="ExampleEventHandling.class" width="300" height="300"> </applet> <hr> </html>

Wenn es zum ersten Mal ausgeführt wird, zeigt das Applet "Applet wird initialisiert. Applet wird gestartet." an. Sobald Sie dann auf das Rechteck klicken, zeigt es "Maus geklickt" an.


Anzeigen von Bildern

Ein Applet kann Bilder in GIF-, JPEG-, BMP- und anderen Formaten anzeigen. Um ein Bild in einem Applet anzuzeigen, müssen Sie die drawImage()-Methode der Klasse java.awt.Graphics verwenden.

Das folgende Beispiel zeigt alle Schritte zum Anzeigen eines Bildes:

Code der Datei ImageDemo.java:

import java.applet.*; import java.awt.*; import java.net.*; public class ImageDemo extends Applet { private Image image; private AppletContext context; public void init() { context = this.getAppletContext(); String imageURL = this.getParameter("image"); if(imageURL == null) { imageURL = "java.jpg"; } try { URL url = new URL(this.getDocumentBase(), imageURL); image = context.getImage(url); }catch(MalformedURLException e) { e.printStackTrace(); // In der Browser-Statusleiste anzeigen context.showStatus("Bild konnte nicht geladen werden!"); } } public void paint(Graphics g) { context.showStatus("Bild wird angezeigt"); g.drawImage(image, 0, 0, 200, 84, null); g.drawString("www.javalicense.com", 35, 100); } }

Applet wie folgt aufrufen:

<html> <title>Das ImageDemo-Applet</title> <hr> <applet code="ImageDemo.class" width="300" height="200"> <param name="image" value="java.jpg"> </applet> <hr> </html>

Audio-Wiedergabe

Ein Applet kann Audio mithilfe der AudioClip-Schnittstelle im Paket java.applet wiedergeben. Die AudioClip-Schnittstelle definiert drei Methoden:

  • public void play():Spielt den Audioclip einmal von Anfang an ab.
  • public void loop(): Spielt den Audioclip in einer Schleife ab.
  • public void stop(): Stoppt die Wiedergabe des Audioclips.

Um ein AudioClip-Objekt zu erhalten, müssen Sie die Methode getAudioClip() der Klasse Applet aufrufen. Diese Methode kehrt sofort zurück, unabhängig davon, ob die URL auf eine echte Audiodatei verweist.

Die Audiodatei wird erst heruntergeladen, wenn sie abgespielt werden soll.

Das folgende Beispiel zeigt alle Schritte zum Abspielen von Audio:

Code der Datei AudioDemo.java:

import java.applet.*; import java.awt.*; import java.net.*; public class AudioDemo extends Applet { private AudioClip clip; private AppletContext context; public void init() { context = this.getAppletContext(); String audioURL = this.getParameter("audio"); if(audioURL == null) { audioURL = "default.au"; } try { URL url = new URL(this.getDocumentBase(), audioURL); clip = context.getAudioClip(url); }catch(MalformedURLException e) { e.printStackTrace(); context.showStatus("Audiodatei konnte nicht geladen werden!"); } } public void start() { if(clip != null) { clip.loop(); } } public void stop() { if(clip != null) { clip.stop(); } } }

Applet wie folgt aufrufen:

<html> <title>Das ImageDemo-Applet</title> <hr> <applet code="ImageDemo.class" width="0" height="0"> <param name="audio" value="test.wav"> </applet> <hr>

Sie können test.wav auf Ihrem Computer verwenden, um das obige Beispiel zu testen.

Andere Erweiterungen