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