Doppelnutzung als Applet und Applikation

Werbung
Doppelnutzung als
Applet und Applikation
Man kann ein Java-Programm auch so schreiben, dass es sowohl als Applet innerhalb
einer Web-Page als auch als lokale Applikation ausgeführt werden kann. Zu diesem Zweck
muss das Programm
– eine Subklasse von Applet sein und
– eine main-Methode enthalten.
– Die main-Methode wird nur bei Aufruf als Applikation ausgeführt und im Applet
ignoriert. Sie muss ein Frame (als Ersatz für das Fenster des Web-Browsers)
erzeugen und in diesem ein Objekt des Applet einfügen und dann die init- und
start-Methoden des Applet aufrufen, die den Inhalt des Applet darstellen.
– Ausserdem sollte ein WindowListener implementiert werden, der beim Schliessen
des Frame die Applikation beendet (analog zum Schliessen des Web-Browsers).
– Falls das Applet eine stop-Methode enthält, muss diese von der Applikation vor
deren Beendigung aufgerufen werden.
Flury / Huonker / Jud
8
AppApp Beispiel
f.setLayout( new BorderLayout() );
import java.awt.*;
a.init();
import java.awt.event.*;
f.add (a, "Center");
import java.applet.*;
f.setSize(300,200);
f.addWindowListener( a );
public class AppApp extends Applet
f.setVisible(true);
implements WindowListener {
a.start();
}
public void init() {
public void windowClosing (WindowEvent e) {
setLayout( new FlowLayout() );
this.stop();
Label hello = new Label("Hello World!");
System.exit(0);
add(hello);
}
// add more content ...
public void windowClosed (WindowEvent e) { }
setVisible(true);
public void windowOpened (WindowEvent e) { }
}
public void windowIconified (WindowEvent e) { }
public void windowDeiconified (WindowEvent e) { }
public static void main (String[] args) {
public void windowActivated (WindowEvent e) { }
AppApp a = new AppApp();
public void windowDeactivated (WindowEvent e) { }
Frame f = new Frame("AppApp");
}
Flury / Huonker / Jud
9
Umwandlung Applet >
Applikation
•
Methode init() in einen Konstruktor (d.h. gleicher Name wie Klasse)
ohne Parameter umwandeln, Returntyp entfernen.
• extends Applet durch extends Frame ersetzen
• Main-Methode schreiben: public static main(String[] args)
• muss static sein
• muss ein Objekt der Klasse (d.h. des Programms) erzeugen
das entsprechende Frame wird erzeugt
• muss Grösse der Frames setzen mit setSize(breite, hoehe);
• muss Frame sichtbar machen mit setVisible(true);
• import der Klasse Applet löschen
• WindowListener implementieren und Applikation bei sich selbst als
WindowListener registieren mit this.addWindowListener(this);
• Layout-Manager auf FlowLayout ändern, falls gewünscht (Default für
Frames ist BorderLayout) mit setLayout(new FlowLayout())
• Kontrollieren, ob keine Methode der Applet-Klasse verwendet wurden.
Flury / Huonker / Jud
10
Herunterladen