InfoHome | Themen | Projekte | Links | Software |
|
Ein leeres Swing-FensterUnsere erste Swing-Oberfläche besteht lediglich aus einem leeren Fenster.
import javax.swing.*; Zu beachten ist, dass bei der Verwendung von Swing-Klassen (hier JFrame) diese zunächst importiert werden müssen. Das Paket javax.swing enthält eine Menge an "leicht-gewichtigen" ("leightweight") Komponenten. In der Praxis hat sich ein etwas anderes Vorgehen für die Erstellung der grafischen Oberfläche einer Applikation durchgesetzt:
import javax.swing.*; Hier wird mit einer abgeleiteten, eigenen Frame-Klasse gearbeitet. Im Konstruktor dieser neuen Klasse werden später alle Komponenten der grafischen Oberfläche erzeugt und verschachtelt, also in Container verpackt. Im Hauptprogramm erzeugt man dann einfach ein Objekt der eigenen Frame-Klasse. Der Vorteil dieses Ansatzes besteht darin, dass die Applikation nun im Aufbau einem Applet (also einem Java-Programm, das man auf Internetseiten stellen und vom Webbrowser ausführen lassen kann) gleicht und man leicht aus dem einen das andere gewinnen kann. Frame mit Inhalt
Nun wollen wir unserem Frame als Inhalt die Swing-Komponente JLabel (ein Textfeld) hinzufügen. Ein direktes Hinzufügen von Komponenten zum JFrame ist jedoch nicht möglich. Innerhalb des JFrame ist ein bestimmter Bereich (content pane - der hellgraue Bereich innerhalb des JFrames) als Container für andere Komponenten vorgesehen. Sämtliche Objekte der grafischen Oberfläche (auch der oben genannte Container für die Komponenten des JFrames) werden als Datenfelder der eigenen Frame-Klasse angelegt und im Konstruktor erzeugt. Die Methode getContentPane() stellt die Verbindung zum Frame-eigenen Container her. Das eigentliche Hinzufügen des JLabels geschieht schließlich mit Hilfe der Methode add(), die am Container-Objekt aufgerufen wird (vgl. Funktions-Projekt). import java.awt.*; Die Klasse Container gehört zum AWT-Paket. Deswegen sind hier zwei import-Anweisungen nötig. Applet-VersionUm aus unserer ersten kleinen Applikation mit grafischer Oberfläche eine Applet-Version zu machen, sind nur wenige Änderungen nötig. Zunächst einmal erbt unsere Klasse nun nicht mehr von JFrame, sondern von JApplet. Da unser Java-Programm selbst nicht für die Erzeugung eines Objekts unserer Klasse zuständig sein wird, müssen wir keinen Konstruktor programmieren. Der Block, der für die Erzeugung der Komponenten sorgt, wird nun in einer Methode names init untergebracht, die beim Start des Applets automatisch aufgerufen wird. Eine main-Methode gibt es nicht. import java.awt.*; Neben der Methode init, haben für Applets die Methoden start, stop und destroy eine besondere Bedeutung, da sie in bestimmten "Lebensabschnitten" des Applets automatisch aufgerufen werden.
Diese Methoden sind mit leerem Rumpf implementiert, so dass sie prinzipiell
immer aufgerufen werden können. In Subklassen wie oben werden dann die
benötigten Methoden überschrieben.
Einbettung in HTMLDie Einbettung in eine HTML-Seite geschieht über das applet-Tag. <applet width="300" height="150" code="AppletMitInhalt.class"> Hier sollte eigentlich ein Java-Applet laufen... </applet>
Sollte aufgrund eines Fehlers das Applet in einem Browser nicht angezeigt werden können, so wird lediglich der Text zwischen den Applet-Tags angezeigt. Ein Teil dessen, was im Frame-Beispiel in der main-Methode steckte, findet sich also innerhalb des Applet-Tags in der HTML-Datei wieder. Wenn die Datei AppletMitInhalt.class nicht im selben Verzeichnis wie die aufrufende HTML-Seite gespeichert ist, muss man den Pfad zur .class Datei mit Hilfe des codebase Attributs im Applet-Tag angeben. |
© 2004-2024 M. Blanke · Ursulaschule · Kleine Domsfreiheit 11-18 · 49074 Osnabrück |