Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java - Applet-Grundlagen

Ein Applet ist ein Java-Programm, das in einem Webbrowser ausgeführt wird. Ein Applet kann eine voll funktionsfähige Java-Anwendung sein, da ihm die gesamte Java-API zur Verfügung steht.

Es gibt einige wichtige Unterschiede zwischen einem Applet und einer eigenständigen Java-Anwendung, darunter die folgenden −

Lebenszyklus eines Applets

Vier Methoden in der Applet-Klasse geben Ihnen das Gerüst, auf dem Sie jedes ernsthafte Applet aufbauen −

Ein "Hallo, Welt"-Applet

Es folgt ein einfaches Applet namens 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 bringen die Klassen in den Geltungsbereich unserer Applet-Klasse −

Ohne diese import-Anweisungen würde der Java-Compiler die Klassen Applet und Graphics, auf die sich die Applet-Klasse bezieht, nicht erkennen.

Die Applet-Klasse

Jedes Applet ist eine Erweiterung der Klasse java.applet.Applet . Die Applet-Basisklasse stellt Methoden bereit, die eine abgeleitete Applet-Klasse aufrufen kann, um Informationen und Dienste aus dem Browserkontext zu erhalten.

Dazu gehören Methoden, die Folgendes tun:−

Zusätzlich stellt die Applet-Klasse eine Schnittstelle bereit, durch die der Betrachter oder Browser Informationen über das Applet erhält und die Ausführung des Applets steuert. Der Betrachter kann −

Die Applet-Klasse stellt Standardimplementierungen jeder dieser Methoden bereit. Diese Implementierungen können bei Bedarf überschrieben werden.

Das "Hello, World"-Applet ist so wie es ist vollständig. Die einzige Methode, die überschrieben wird, ist die Paint-Methode.

Aufrufen eines Applets

Ein Applet kann aufgerufen werden, indem Direktiven in eine HTML-Datei eingebettet werden und die Datei über einen Applet-Viewer oder einen Java-fähigen Browser angezeigt wird.

Das -Tag ist die Grundlage für das Einbetten eines Applets in eine HTML-Datei. Es folgt ein Beispiel, das das "Hello, World"-Applet aufruft −

<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>

Hinweis − Unter HTML-Applet-Tag erfahren Sie mehr über das Aufrufen von Applets aus HTML.

Das code-Attribut des -Tags ist erforderlich. Es gibt die auszuführende Applet-Klasse an. Breite und Höhe werden auch benötigt, um die anfängliche Größe des Bereichs anzugeben, in dem ein Applet ausgeführt wird. Die Applet-Direktive muss mit einem -Tag abgeschlossen werden.

Wenn ein Applet Parameter akzeptiert, können Werte für die Parameter übergeben werden, indem -Tags zwischen und hinzugefügt werden. Der Browser ignoriert Text und andere Tags zwischen den Applet-Tags.

Nicht Java-fähige Browser verarbeiten und nicht. Daher ist alles, was zwischen den Tags erscheint und nichts mit dem Applet zu tun hat, in nicht Java-fähigen Browsern sichtbar.

Der Betrachter oder Browser sucht an der Stelle des Dokuments nach dem kompilierten Java-Code. Um etwas anderes anzugeben, verwenden Sie das codebase-Attribut des -Tags wie gezeigt −

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

Wenn sich ein Applet in einem anderen als dem Standardpaket befindet, muss das haltende Paket im Codeattribut angegeben werden, indem das Punktzeichen (.) verwendet wird, um Paket-/Klassenkomponenten zu trennen. Zum Beispiel −

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

Applet-Parameter abrufen

Das folgende Beispiel zeigt, wie ein Applet dazu gebracht wird, auf im Dokument angegebene Setup-Parameter zu reagieren. Dieses Applet zeigt ein Schachbrettmuster aus Schwarz und einer zweiten Farbe.

Die zweite Farbe und die Größe jedes Quadrats können als Parameter für das Applet innerhalb des Dokuments angegeben werden.

CheckerApplet erhält seine Parameter in der Methode init(). Es kann seine Parameter auch in der Methode paint() erhalten. Es ist jedoch praktisch und effizient, die Werte zu erhalten und die Einstellungen einmal beim Start des Applets zu speichern, anstatt bei jeder Aktualisierung.

Der Applet-Viewer oder -Browser ruft die init()-Methode jedes Applets auf, das er ausführt. Der Betrachter ruft init() einmal direkt nach dem Laden des Applets auf. (Applet.init() ist implementiert, um nichts zu tun.) Überschreiben Sie die Standardimplementierung, um benutzerdefinierten Initialisierungscode einzufügen.

Die Methode Applet.getParameter() ruft einen Parameter ab, wenn der Name des Parameters angegeben ist (der Wert eines Parameters ist immer eine Zeichenfolge). Wenn es sich bei dem Wert um numerische oder andere Daten handelt, die keine Zeichen sind, muss die Zeichenfolge analysiert werden.

Das Folgende ist ein Skelett von CheckerApplet.java −

import java.applet.*;
import java.awt.*;

public class CheckerApplet extends Applet {
   int squareSize = 50;   // initialized to default size
   public void init() {}
   private void parseSquareSize (String param) {}
   private Color parseColor (String param) {}
   public void paint (Graphics g) {}
}

Hier sind die Methoden init() und private parseSquareSize() von CheckerApplet −

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) {
      // Let default value remain
   }
}

Das Applet ruft parseSquareSize() auf, um den squareSize-Parameter zu parsen. parseSquareSize() ruft die Bibliotheksmethode Integer.parseInt() auf, die einen String parst und eine ganze Zahl zurückgibt. Integer.parseInt() löst eine Ausnahme aus, wenn sein Argument ungültig ist.

Daher fängt parseSquareSize() Ausnahmen ab, anstatt zuzulassen, dass das Applet bei fehlerhafter Eingabe fehlschlägt.

Das Applet ruft parseColor() auf, um den Farbparameter in einen Farbwert zu parsen. parseColor() führt eine Reihe von Zeichenfolgenvergleichen durch, um den Parameterwert mit dem Namen einer vordefinierten Farbe abzugleichen. Sie müssen diese Methoden implementieren, damit dieses Applet funktioniert.

Applet-Parameter festlegen

Das Folgende ist ein Beispiel für eine HTML-Datei mit einem darin eingebetteten CheckerApplet. Die HTML-Datei spezifiziert beide Parameter für das Applet mittels des -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>

Hinweis − Bei Parameternamen wird die Groß-/Kleinschreibung nicht beachtet.

Anwendungskonvertierung in Applets

Es ist einfach, eine grafische Java-Anwendung (dh eine Anwendung, die das AWT verwendet und die Sie mit dem Java-Programmstarter starten können) in ein Applet umzuwandeln, das Sie in eine Webseite einbetten können.

Im Folgenden sind die spezifischen Schritte zum Konvertieren einer Anwendung in ein Applet aufgeführt.

  • Erstellen Sie eine HTML-Seite mit dem entsprechenden Tag, um den Applet-Code zu laden.

  • Geben Sie eine Unterklasse der JApplet-Klasse an. Machen Sie diese Klasse öffentlich. Andernfalls kann das Applet nicht geladen werden.

  • Eliminieren Sie die Hauptmethode in der Anwendung. Erstellen Sie kein Rahmenfenster für die Anwendung. Ihre Bewerbung wird im Browser angezeigt.

  • Verschieben Sie jeden Initialisierungscode aus dem Rahmenfensterkonstruktor in die Init-Methode des Applets. Sie müssen das Applet-Objekt nicht explizit erstellen. Der Browser instanziiert es für Sie und ruft die init-Methode auf.

  • Entfernen Sie den Aufruf von setSize; Bei Applets erfolgt die Größenanpassung mit den Breiten- und Höhenparametern in der HTML-Datei.

  • Entfernen Sie den Aufruf von setDefaultCloseOperation. Ein Applet kann nicht geschlossen werden; es wird beendet, wenn der Browser beendet wird.

  • Wenn die Anwendung setTitle aufruft, eliminieren Sie den Aufruf der Methode. Applets dürfen keine Titelleisten haben. (Sie können natürlich die Webseite selbst mit dem HTML-Title-Tag betiteln.)

  • Rufen Sie setVisible(true) nicht auf. Das Applet wird automatisch angezeigt.

Ereignisbehandlung

Applets erben eine Gruppe von Ereignisbehandlungsmethoden von der Container-Klasse. Die Klasse Container definiert mehrere Methoden, wie beispielsweise processKeyEvent und processMouseEvent, um bestimmte Arten von Ereignissen zu behandeln, und dann eine allumfassende Methode namens processEvent.

Um auf ein Ereignis zu reagieren, muss ein Applet die entsprechende ereignisspezifische 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 apple ");
   }

   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) {
      // Draw a Rectangle around the applet's display area.
      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! ");
   }
}

Lassen Sie uns dieses Applet nun wie folgt aufrufen −

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

Anfänglich zeigt das Applet "Initialisierung des Applets. Starten des Applets" an. Sobald Sie dann in das Rechteck klicken, wird auch "Mausklick" angezeigt.

Bilder anzeigen

Ein Applet kann Bilder im Format GIF, JPEG, BMP und andere anzeigen. Um ein Bild innerhalb des Applets anzuzeigen, verwenden Sie die Methode drawImage() in der Klasse java.awt.Graphics.

Im Folgenden finden Sie ein Beispiel, das alle Schritte zum Anzeigen von Bildern veranschaulicht −

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");
      g.drawImage(image, 0, 0, 200, 84, null);
      g.drawString("www.javalicense.com", 35, 100);
   }  
}

Lassen Sie uns dieses Applet nun wie folgt aufrufen −

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

Wiedergabe von Audio

Ein Applet kann eine Audiodatei abspielen, die durch die AudioClip-Schnittstelle im java.applet-Paket repräsentiert wird. Die AudioClip-Schnittstelle hat drei Methoden, einschließlich −

  • öffentliches Leerspiel() − Spielt den Audioclip einmal von Anfang an ab.

  • öffentliche Void-Schleife() − Bewirkt, dass der Audioclip kontinuierlich wiedergegeben wird.

  • Public Void Stop() − Beendet die Wiedergabe des Audioclips.

Um ein AudioClip-Objekt zu erhalten, müssen Sie die getAudioClip()-Methode der Applet-Klasse aufrufen. Die getAudioClip()-Methode gibt sofort zurück, unabhängig davon, ob die URL in eine tatsächliche Audiodatei aufgelöst wird oder nicht. Die Audiodatei wird erst heruntergeladen, wenn versucht wird, den Audioclip abzuspielen.

Das folgende Beispiel zeigt alle Schritte zum Abspielen 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();
      }
   }
}

Lassen Sie uns dieses Applet nun wie folgt aufrufen −

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

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


Java

  1. Java-Operatoren
  2. Java-Kommentare
  3. Java for-each-Schleife
  4. Java-Strings
  5. Java-Schnittstelle
  6. Anonyme Java-Klasse
  7. Java-Versuch-mit-Ressourcen
  8. Java-Anmerkungen
  9. Java-Assertionen
  10. Java-Vektor