English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ein Applet ist ein Java-Programm. Es läuft in der Regel in Webbrowsern, die Java unterstützen. Da es eine vollständige Java-API-Unterstützung hat, ist ein Applet eine voll funktionsfähige Java-Anwendung.
Wie folgt sind die wichtigen Unterschiede zwischen einer独立的 Java-Anwendung und einem Applet:
Die Klasse Applet in Java erbt von java.applet.Applet.
Die Applet-Klasse definiert keine main()-Methode, daher wird eine Applet-Anwendung die main()-Methode nicht aufrufen.
Applets sind so entworfen, dass sie in einer HTML-Seite eingebettet werden.
Wenn der Benutzer eine HTML-Seite mit Applet durchsucht, wird der Code des Applets auf den Computer des Benutzers heruntergeladen.
Um ein Applet anzuzeigen, wird eine JVM benötigt. Dies kann ein Plugin für den Webbrowser oder eine独立的运行时环境 sein.
Die JVM auf dem Benutzerrechner erstellt ein Beispiel der Applet-Klasse und ruft verschiedene Methoden im Applet-Lebenszyklus auf.
Applets haben strenge Sicherheitsregeln, die von Webbrowsern durchgesetzt werden, und das Sicherheitsmechanismus des Applets wird als Sandkastensicherheit bezeichnet.
Applets benötigen andere Klassen, die als Java-Archive (JAR)-Dateien heruntergeladen werden können.
Die vier Methoden in der Applet-Klasse bieten uns einen Rahmen, auf dem wir kleine Anwendungen entwickeln können:
init: Das Ziel dieser Methode ist die Bereitstellung der erforderlichen Initialisierung für Ihr Applet. Diese Methode wird aufgerufen, nachdem die param-Tags im Applet-Tag verarbeitet wurden.
start: Diese Methode wird automatisch aufgerufen, nachdem der init-Methode aufgerufen wurde. Diese Methode wird aufgerufen, wenn der Benutzer von einer anderen Seite zurück zur Seite mit dem Applet wechselt.
stop: Wenn der Benutzer das Applet von der Seite entfernt, wird diese Methode automatisch aufgerufen. Daher kann diese Methode im selben Applet mehrmals aufgerufen werden.
destroy: Diese Methode wird nur aufgerufen, wenn der Browser normal geschlossen wird. Da Applets nur auf HTML-Seiten gültig sind, sollten Sie keine Ressourcen vergessen, wenn der Benutzer die Seite mit dem Applet verlässt.
paint: Diese Methode wird sofort nach dem Aufruf der start()-Methode oder wenn das Applet im Browser neu gezeichnet werden muss, aufgerufen. Die paint()-Methode wird tatsächlich von java.awt abgeleitet.
Hier ist ein einfaches Applet-Programm 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.
没有这些 import 语句,Java 编译器就识别不了 Applet 和 Graphics 类。
每一个 Applet 都是 java.applet.Applet 类的子类,基础的 Applet 类提供了供衍生类调用的方法,以此来得到浏览器上下文的信息和服务。
这些方法做了如下事情:
得到 Applet 的参数
得到包含 Applet 的 HTML 文件的网络位置
得到 Applet 类目录的网络位置
打印浏览器的状态信息
获取一张图片
获取一个音频片段
播放一个音频片段
调整此 Applet 的大小
除此之外,Applet 类还提供了一个接口,该接口供 Viewer 或浏览器来获取 Applet 的信息,并且来控制 Applet 的执行。
Viewer 可能是:
请求 Applet 作者、版本和版权的信息
请求 Applet 识别的参数的描述
初始化 Applet
销毁 Applet
开始执行 Applet
结束执行 Applet
Applet 类提供了对这些方法的默认实现,这些方法可以在需要的时候重写。
"Hello,World" applet 都是按标准编写的。唯一被重写的方法是 paint 方法。
Applet 是一种 Java 程序。它通常在支持 Java 的 Web 浏览器内运行。因为它有完整的 Java API 支持,所以 Applet 是一个全功能的 Java 应用程序。
<applet> 标签是在 HTML 文件中嵌入 Applet 的基础。以下是一个调用 "Hello World" applet 的实例;
<html> <title>The Hello, World Applet</title> <hr> <applet code="HelloWorldApplet.class" width="320" height="120"> If your browser was Java-enabled, a "Hello, World" message would appear here. </applet> <hr> </html>
Beachten Sie: 您可以参考 HTML Applet 标签来了解更多从 HTML 中调用 applet 的方法。
Die Attribute des <applet>-Tags spezifizieren die Klasse des zu laufenden Applets. width und height werden verwendet, um die Größe des Startfensters des Applets zu spezifizieren. Das Applet muss <}} verwenden./applet> verwendet werden, um zu schließen.
Wenn das Applet Parameter akzeptiert, müssen die Werte der Parameter in den <param>-Tags hinzugefügt werden, die zwischen <applet> und </applet> nicht ausführen. Der Browser ignoriert den Text zwischen den Tags <applet> und <
Browser ohne Java-Unterstützung können <applet> und </applet> gezeigt. Daher ist alles, was zwischen den Tags angezeigt wird und mit dem Applet nichts zu tun hat, in Browsern ohne Java-Unterstützung sichtbar.
Der Viewer oder der Browser sucht an der Position des Dokuments nach kompiliertem Java-Code. Um den Pfad des Dokuments zu spezifizieren, muss die Eigenschaft codebase des <applet>-Tags verwendet werden.
Wie folgt:
<applet codebase="http://amrood.com/applets code="HelloWorldApplet.class" width="320" height="120">
Wenn das Applet in einem Paket liegt und nicht im Standardpaket, muss das Paket in der code-Eigenschaft angegeben werden, z.B.:
<applet code="mypackage.subpackage.TestApplet.class" width="320" height="120">
Der folgende Beispiel zeigt, wie ein Applet verwendet wird, um die Parameter in einer Datei zu setzen. Das Applet zeigt ein schwarzes Schachbrettmuster und die zweite Farbe.
Die zweite Farbe und die Größe jeder Spalte werden durch die Parameter des Applets in der Dokumentation spezifiziert.
CheckerApplet erhält seine Parameter in der Methode init(). Er kann seine Parameter auch in der Methode paint() erhalten. Es ist jedoch praktisch und effizient, die Werte zu erhalten und zu speichern, wenn das Applet anfängt, Werte zu erhalten und Einstellungen zu speichern, anstatt jeden Refresh zu erhalten.
Der Applet-Viewer oder der Browser ruft die Methode init() des Applets bei jedem Lauf auf. Nachdem das Applet geladen wurde, ruft der Viewer sofort die Methode init() auf (Applet.init() macht nichts), überschreibt die Standardimplementierung dieser Methode und fügt einige benutzerdefinierte Initialisierungscode hinzu.
Die Methode Applet.getParameter() gibt den Wert eines Parameters zurück, indem der Parametername angegeben wird. Wenn der zurückgegebene Wert eine Zahl oder andere nicht zeichenbezogene Daten ist, muss dieser in den Typ String umgewandelt werden.
Nachstehend ist die Änderung in CheckerApplet.java:
import java.applet.*; import java.awt.*; public class CheckerApplet extends Applet { int squareSize = 50;// Initialisierung der Standardgröße public void init() {} private void parseSquareSize(String param) {} private Color parseColor(String param) {} public void paint(Graphics g) {} }
Nachstehend sind die Methoden init() und die private parseSquareSize() Methode der CheckerApplet-Klasse 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) { // Beibehalten der Standardwerte } }
Das Applet ruft parseSquareSize() auf, um den Parameter squareSize zu analysieren. parseSquareSize() ruft die Bibliotheks methode Integer.parseInt() auf, die einen String in eine Ganzzahl umwandelt. Wird ein ungültiger Parameter übergeben, wirft Integer.parseInt() eine Ausnahme.
Daher ist auch die Methode parseSquareSize() auf Ausnahmen überprüfend und akzeptiert keine ungültigen Eingaben durch das Applet.
Das Applet ruft die parseColor () -Methode auf, um den Farbparameter in einen Color -Wert zu parsen. Die parseColor () -Methode führt eine Reihe von String-Vergleichen durch, um den Wert des Parameters mit den Namen voreingestellter Farben zu vergleichen. Sie müssen diese Methoden implementieren, damit das Applet funktioniert.
Das folgende Beispiel ist eine HTML-Datei, in der die CheckerApplet -Klasse eingebettet ist. Die HTML-Datei gibt dem Applet zwei Parameter durch den Einsatz der <param> -Tags.
<html> <title>Checkerboard Applet</title> <hr> <applet code="CheckerApplet.class" width="480" height="320"> <param name="color" value="blue"> <param name="squaresize" value="30"> </applet> <hr> </html>
Beachten Sie: Die Namen der Parameter sind nicht groß- oder kleinschreibbar.
Die Umwandlung eines grafischen Java-Anwendung (das bedeutet, Anwendungen, die AWT verwenden und durch einen java -Programmstarter gestartet werden) in ein in einer Webseite eingebettetes Applet ist sehr einfach.
Hier sind einige Schritte, um eine Anwendung in ein Applet umzuwandeln:
Schreiben Sie eine HTML-Seite, die Tags enthält, die das Laden des Applet-Code ermöglichen.
Schreiben Sie eine Unterklasse der JApplet -Klasse und setzen Sie diese auf public. Andernfalls kann das Applet nicht geladen werden.
Entfernen Sie die main () -Methode der Anwendung. Konstruieren Sie kein Anwendungsfenster für die Anwendung, da diese im Browser angezeigt werden soll.
Verschieben Sie den Initialisierungscode aus dem Konstruktor der Anwendungsfenster in die init () -Methode des Applets. Sie müssen den Applet-Objekt nicht explizit instanziieren, der Browser wird durch den Aufruf der init () -Methode ein Objekt instanziieren.
Entfernen Sie den Aufruf der setSize () -Methode. Für Applets ist die Größe bereits durch die width- und height -Parameter in der HTML-Datei festgelegt.
Entfernen Sie den Aufruf der setDefaultCloseOperation () -Methode. Ein Applet kann nicht geschlossen werden, es wird mit dem Verlassen des Browsers beendet.
Wenn die Anwendung die setTitle () -Methode aufgerufen hat, entfernen Sie den Aufruf dieser Methode. Ein Applet kann keine Titelleiste haben. (Natürlich können Sie der Webseite selbst einen Namen geben, indem Sie den title -Tag in HTML verwenden)
Rufe nicht setVisible(true) auf, das Applet wird automatisch angezeigt.
Die Klasse Applet erbt viele Ereignisbehandlungs Methoden von der Klasse Container. Die Klasse Container definiert mehrere Methoden, wie z.B. processKeyEvent() und processMouseEvent(), um spezielle Ereignistypen zu verarbeiten, und einen Methode namens processEvent, um alle Ereignisse zu erfassen.
Um auf ein Ereignis zu reagieren, muss das Applet die geeignete Ereignisbehandlungs Methode überschreiben.
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("initializing the applet "); } public void start() { addItem("starting the applet "); } public void stop() { addItem("stopping the applet "); } public void destroy() { addItem("unloading the applet"); } void addItem(String word) { System.out.println(word); strBuffer.append(word); repaint(); } public void paint(Graphics g) { //Zeichne ein Rechteck um das Anzeigefeld des Applets. g.drawRect(0, 0, getWidth() - 1, getHeight()} - 1); //display the string inside the rectangle. 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("mouse clicked!"); } }
The following call to the Applet is as follows:
<html> <title>Event Handling</title> <hr> <applet code="ExampleEventHandling.class" width="300" height="300"> </applet> <hr> </html>
At first run, the Applet displays "initializing the applet. Starting the applet." and then, when you click the rectangle, it displays "mouse clicked".
Applets can display GIF, JPEG, BMP, and other image formats. To display an image in an Applet, you need to use the drawImage() method of the java.awt.Graphics class.
The following example demonstrates all the steps to display an image:
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(); // Display in browser status bar context.showStatus("Could not load image!"); } } public void paint(Graphics g) { context.showStatus("Displaying image"); 200, 84, null); g.drawString("www.javalicense.com", 35, 100); } }
So wird der Applet aufgerufen:
<html> <title>The ImageDemo Applet</title> <hr> <applet code="ImageDemo.class" width="300" height="200"> <param name="image" value="java.jpg"> </applet> <hr> </html>
Ein Applet kann Audios über das AudioClip-Interface im java.applet-Paket abspielen. Das AudioClip-Interface definiert drei Methoden:
public void play(): Wiedergabe eines Audiospots ab dem Anfang einmal.
public void loop(): Schleifenwiedergabe eines Audiospots
public void stop(): Stopp der Wiedergabe eines Audiospots
Um ein AudioClip-Objekt zu erhalten, müssen Sie die Methode getAudioClip() der Applet-Klasse aufrufen. Die Methode gibt sofort das Ergebnis zurück, unabhängig davon, ob die URL auf eine echte Audiodatei verweist oder nicht.
Bis zur Wiedergabe der Audiodatei wird diese heruntergeladen.
Der folgende Beispiel zeigt alle Schritte zur Wiedergabe eines Audios.
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("Could not load audio file!"); } } public void start() { if(clip != null) { clip.loop(); } } public void stop() { if(clip != null) { clip.stop(); } } }
So rufen Sie das Applet auf:
<html> <title>The ImageDemo Applet</title> <hr> <applet code="ImageDemo.class" width="0" height="0"> <param name="audio" value="test.wav"> </applet> <hr>
Sie können den Beispiel oben mit test.wav von Ihrem Computer testen.