Start presentation

Slide 1: Applets

Applets sind Java-Programme, die in HTML-Seiten eingebunden sind (siehe bspw. map24.de).

Alle Applets werden von der Klasse %JAVADOC{java.applet.Applet}% abgeleitet.

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

public class HelloWorld extends Applet {
    public void paint(Graphics g) {
        g.drawString("Hello world!", 50, 25);
    }
}

-- Christo - 13 Nov 2003

Slide 2: Der <applet>-Tag

Applets werden durch einen besonderen Tag in den HTML-Code intergriert. Beim HTML-Standard 3.2 heißt dieser Tag applet:

<applet name="mein_erstes_Applet" code="HelloWorldApplet"
        codebase="http://lxdv10.gsi.de/twiki/pub/Java/FirstApplet/"
        width="200" height="60">
   <param name="Variable_xy" value="test123" />
</applet>

Neuere Standards haben diesen Tag jedoch verworfen (deprecated).

Slide 3: Der <object>-Tag

HTML 4 hat einen allgemeineren Tag zum Einbinden von Multimedia-Objekten ersonnen:

<object name="mein_erstes_Applet"
        codetype="application/java-vm"
        codebase="http://lxdv10.gsi.de/twiki/pub/Java/FirstApplet/"
        width="200" height="60">
   <param name="code" value="HelloWorldApplet.class" />
   <param name="type" VALUE = "application/x-java-applet">
</object>

Slide 4: Der <embed>-Tag

Netscape hat zur Einbindung von Multimedia-Objekten vor der Definition des object Tags bereits eigenmächtig den emded Tag definiert. Dieser ist nicht Bestandteil eines offiziellen Standards.

<embed type="application/x-java-applet"
       code="HelloWorldApplet.class"
       width=200 height="60"
       pluginspage =" http://java.sun.com/products/plugin/index.html#download">
   <noembed>
      Your is completely ignoring the <embed> tag!
   </noembed>
</embed>

-- Christo - 28 Nov 2003

Slide 5: Features der %JAVADOC{java.applet.Applet}%-Klasse

life cycle

public class MyApplet extends Applet {
    public void init() {
       // wird aufgerufen beim ersten Laden des Applets
    }
    public void start() {
       // wird aufgerufen bei jedem Besuch der Applet-Seite
    }
    public void stop() {
        // wird aufgerufen bei jedem Verlassen der Applet-Seite
   }
    public void destroy() {
        // wird beim Beenden des Browsers aufgerufen
    }

Graphik

%JAVADOC{java.applet.Applet}% ist ein Erbe von java.awt.%JAVADOC{java.awt.Component}% und daher implizit eine GUI-Klasse.

public void paint(java.awt.Graphics graphics) {
   // Graphik-Operationen mit Hilfe des graphics-Ojektes 
}

Interaktion mit dem Browser

  • Parameterübergabe durch den <param>-Tag
  • Anzeige von Dokumenten im Browser durch %JAVADOC{java.applet.AppletContext}%.showDocument
  • Parameteränderung mittels JavaScript, LiveConnect (Netscape-spezifisch)

Sicherheit

Applets werden in einer Sandbox ausgeführt und haben nur wenige Rechte beim Zugriff auch Resourcen des ausführenden Rechners (siehe AppletSecurity).

-- Christo - 28 Nov 2003

Slide 6: java.awt

Zur GUI-Implementation gibt es verschiedene Bibliotheken von Java-Klassen

Das AWT ist das ursprüngliche GUI-API der ersten Java-Versionen, dass mittlerweile als veraltet anzusehen ist.

Die ursprüngliche Idee beim AWT ist, eine Schnittstelle zum nativen GUI der jeweils zugrundeliegenden Plattform zu schaffen. Bzgl. der Reichhaltigkeit des APIs lief dies jedoch auf den kleinsten gemeinsamen Nenner hinaus. Java-AWT-Anwendungen sind im Idealfall nicht von anderen, nativen Anwendungen zu unterscheiden.

Slide 7: javax.swing

Hinter dem SwingGUI steht der Versuch von Sun und Netscape, ein reine Java-GUI-Bibliothek zu implementieren, die nur für grundlegende Zeichenoperationen auf das GUI der zugrundeliegenden Plattform zurückgreift.

Swing lässt sich daher leicht auf neue - auch weniger mächtige - Plattformen portieren und bietet auf allen Plattformen dasselbe Look'n'feel, das aber beliebig ausgetaucht werden kann. Optimierungsmöglichkeiten wie bspw. Hardware-Beschleunigung bestimmter Operationen können mit dieser Bibliothek kaum genutzt werden - sie ist also mit einem Performance-Nachteil verbunden.

Slide 8: Weitere GUI-Toolkits

  • Standard Widget Toolkit (SWT) Hierbei handelt es sich um einen Bestandteil des Eclipse-Projektes, das nach Art des AWT versucht, eine möglichst dünne Zwischenschicht zum nativen Plattform-GUI zu bieten. Die Performance ist dabei naturgemaäß höher als bspw. bei Swing. Da SWT jedoch nicht Bestandteil des Standard-SDK ist, ist eine Verfügbarkeit für jede Java-Plattform nicht immer gegeben. http://www.eclipse.org/articles/Article-SWT-Design-1/SWT-Design-1.html

-- Christo - 28 Nov 2003

Slide 9: GUI-Programmierung mit Swing

Top-level Container

%JAVADOC{javax.swing.JApplet}%
Ein Container für Applets mit Swing-GUI
%JAVADOC{javax.swing.JFrame}%
Die Fensterklasse des Swing-GUI

Swing-Komponenten

Siehe http://java.sun.com/docs/books/tutorial/uiswing/components/components.html

LayoutManagers

EventHandling


Siehe auch: http://java.sun.com/docs/books/tutorial/uiswing/index.html

-- Christo - 28 Nov 2003 Warning: Can't find topic Java.LayoutManager

Slide 10: Event handling

Ereignisse wie Mausklicks etc. werden im Java i.a. folgendermaßen abgehandelt:
  • An der Bearbeitung des Ereignisse interessierte Objekte melden sich beim das Ereignis auslösenden Objekt an. Sie müssen dazu das passende_Listener_-Interface implementieren.
  • Das Auslöser-Objekt verwaltet die Listener in einer Liste.
  • Sobald ein Ereignis ausgelöst wird, wird ein entsprechendes %JAVADOC{"java.util.EventObject}% erzeugt und die entsprechende Listener Methode mit diesem Objekt aufgerufen.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ListenerApplet extends JApplet {

    JButton button = new JButton("Click mich!");

    public void init() {
   getContentPane().add(button);
   button.addActionListener(new ButtonClick());
    }

    public class ButtonClick implements ActionListener {
   public void actionPerformed(ActionEvent e) {
       JOptionPane.showMessageDialog(button, "Gedrückt!");
   }
    }
}


Siehe

-- Christo - 30 Nov 2003

Topic revision: r1 - 2003-11-28, ChristopherHuhn
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding GSI Wiki? Send feedback | Legal notice | Privacy Policy (german)