info@a-coding-project.de

Java: Applets

Applets sind Java-Programme, die direkt in HTML-Dokumente eingebunden werden können. Beim Ausführen des HTML-Codes wird die Applet-Datei vom angegebenen Speicherort auf den Client-Computer heruntergeladen und dort ausgeführt. Bei der Programmierung sind einige Besonderheiten zu beachten.

Was ist das Besondere an einem Applet?

Bisher haben wir nur Programmcode geschrieben, der vom Interpreter ohne Einbeziehung des Internet-Browsers ausgeführt wird, zum Beispiel durch Eingabe des Befehls java Anwendung. Dabei sucht sich der Interpreter die main-Funktion und führt sie aus. Alle Funktionen und Methoden werden dann von hier aus gesteuert.
Applets brauchen keine main-Funktion. Stattdessen wird die Java .applet-Klasse erweitert. Für die Grafik wird noch eine Grafik-Klasse eingebunden, und schon ist aus einer Java-Applikation ein Java-Applet geworden:

import java.applet.Applet;
import java.awt.Graphics;

public class Roboter extends Applet
{
  public void paint(Graphics g)
  {
    // Kommentar: hier folgt die eigentliche Anweisung
    g.drawString("Der Roboter arbeitet", 100,100 );
  }
}

Natürlich kann ein Applet trotzdem eine main-Funktion enthalten. Dann kann man es sowohl als Applet als auch als Applikation ansprechen.

Was ein Applet kann

In einem Applet kann grundsätzlich der volle Leistungumfang der Programmersprache Java und damit der Objektorientierung genutzt werden. Das heißt, Objekte grundsätzlich aller Art können genutzt, ihre Methoden ausgeführt werden. Das gilt für das Design von Websites über Multimedia-Funktionen bis zu ganz exotischen Objekten. Man kann also eine Website mit Hilfe eines Applets dynamisch völlig neu und verschieden gestalten, je nach den Informationen, die man im Dialog vom Benutzer erfragen kann.
Einiges können Applets nicht, weil sie es nicht können sollen, damit sie kein Sicherheitsrisiko darstellen: Applets können nicht auf das Dateisystem des Client-Computers zugreifen. Sie können also weder Dateien von der lokalen Festplatte des Benutzers lesen noch diese irgendwie schreiben oder verändern. Sie können auch keine Verbindung zu anderen Computern herstellen, außer zu dem Host, von dem sie geladen wurden.

Einfluß auf die WebSite

Das Werkzeug AWT

Um das Layout einer Website mitzugestalten, gibt es das Grafik-Werkzeug AWT. Es enthält die wichtigsten Methoden zur Arbeit mit einer grafischen Oberfläche. Beispiel:

import java.awt.Frame;
public class Roboter
{
  public static void main (String s[] )
  {
    Frame f = new Frame("Der Roboter arbeitet");
    f.setSize(300, 100);
    f.SetVisible( true );
  }
}

In unserem Beispiel wird ein Fenster erzeugt mit der Ausschrift "Der Roboter arbeitet." Dazu importieren wird das Paket Frame (Fenster oder Rahmen). Die Methode SetVisible(true) macht es sichtbar.
Neben dem Frame-Paket für die Eigenschaften von Fenstern (Rahmen) auf grafischen Oberflächen beinhaltet AWT noch viele andere Klassen und Methoden. Wir können sie in folgende Gruppen aufteilen:

Container

Komponenten, die andere Komponenten enthalten. Mit ihrer Hilfe werden Oberflächenelemente gruppiert und die Oberfläche strukturiert. Dazu gehören vor allem Frame (für die Fenster) und Panel (für Bereiche innerhalb eines Fensters).

Components

Schaltflächen (Buttons), Menübalken (MenuBar) Markierungselemente (Checkbox), Textfelder (Textfield), Rollbalken (Scrollbar) Dialogfenster (Dialog) und andere.

Layout-Manager

Er beinhaltet spezielle Klassen, mit deren Hilfe die Anordnung und Ausrichtung der Steuerelemente auf dem Bildschirm geregelt werden kann.

Canvas

Zeichnen und Anzeige von Grafiken und Bildern auf dem Bildschirm. Die entsprechende Klasse heißt Canvas.

Event-Listener

Wie der Name schon sagt, werden hier Ereignisse verarbeitet, z.B. Mausclicks und Tastatur-Eingaben.

Umgang mit AWT-Klassen

Um alle AWT-Klassen zu importieren, verwenden wir den Befehl

import java.awt.*;

Das folgende Beispiel zeigt, wie mit den AWT-Klassen Button in einem Browser-Fenster erzeugt werden können:

import java.awt.*;

public class Button_Fenster extends Frame
{
  // Konstruktor:
  Button_Fenster (String titel)
  {
    super(titel); // Titel des Fensters
    // Der Button wird angelegt:
    Button StartButton = new Button("Start");
    // Layout-Manager wählen:
    setLayout(new FlowLayout());
    // zum Frame hinzufügen:
    add(StartButton);
  }

  public static void main (String[] args )
  {
    // das Fenster aus der Klasse erzeugen:
    Button_Fenster Fenster = new Button_Fenster("Start-Button");
    Fenster.pack();
    // Anzeigen des Fensters:
    Fenster.show();
  }
}

Browserabhängiges Verhalten

Manche Methoden lassen sich nur auf einem bestimmten Browser ausführen, z.B. auf dem Netscape Communicator oder dem Microsoft Internet Explorer. Dafür ist es nützlich, zu ermitteln, welcher Browser gerade Java ausführt. Das kann man zwar nicht direkt abfragen, aber indirekt, indem man versucht, eine Aktion auszuführen, die nur der Internet Explorer kann, vorsichtshalber aber eine Fehlerbehandlung einbaut. Wenn die Aktion ausgeführt wird, ist es der Internet Explorer. Wird eine Exception geworfen, kann man den Internet-Explorer ausschließen und das Entsprechende mit Netscape probieren. Die entsprechenden Klassen sind beim IE die Klasse com.ms.applet.GenericAppletContext und bei Netscape netscape.applet.MozillaAppletContext .
Nun kann es allerdings sein, dass Java vom Browser nur deshalb nicht ausgeführt wird, weil es deaktiviert ist. Um das auszuschließen, kann man es abfragen, natürlich nicht mit Java, aber mit der JavaScript-Funktion javaEnabled(). Ihr Rückgabewert kann von JavaScript ausgewertet werden:

if ( !navigator.javaEnabled() )
        self.location.href = "Java_Ist_deaktiviert.html";

In unserem Beispiel wird in diesem Fall eine HTML-Seite mit einer entsprechenden Fehlerneldung
geöffnet. Das funktioniert natürlich nur, wenn wenigstens JavaScript aktiviert ist. Sonst sieht es schlecht aus.
Überhaupt können Java und JavaScript sich gegenseitig helfen. Netscape hat ein Verfahren entwickelt, mit dem JavaScript öffentliche Variablen und Methoden eines Java-Applets verwenden darf. Die Syntax dazu ist document.appletname.variable bzw. document.appletname.methode()
Umgekehrt kann ein Java-Applet Funktionen aus JavaScript aufrufen. Dazu nutzt es die Klasse JSObject aus dem Package netscape.javascript, z.B. durch die Anweisung:

import netscape.javascript; 

Diese Klasse ist auch im Internet Explorer verfügbar.

Weiterlesen: ⯈ Funktionen

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Auch interessant