Literatur

JFrame

JFrame ist das Standard-Fenster für die grafische Oberflächenprogrammierung mit Swing. Es nimmt alle anderen Container und Bedienelemente auf und vereint es zu einer Oberfläche.

Ein Frame hat folgenden Aufbau:

 

Die hinterste Ebene soll den gesamten Frame darstellen, der sich aus den darüberliegenden Schichten zusammensetzt.

Die Basis bildet der RootPane. Dieser stellt, wie der Name bereits impliziert (engl. root = Wurzel), den Anfang eines Frames und der dazugehörigen Container-Hierarchie dar. Der RootPane enthält den sogenannten LayeredPane (von engl. layer = Ebene).  Die  Kinder eines LayeredPanes sind einer Ebene zugeordnet, die sich auch je nach Verwendung verschieben kann. Ein LayeredPane wiederum besitzt einen sogenannten ContentPane (von engl. content = Inhalt), welcher die eigentlichen Bedienelemente enthält, sowie eine Menüleiste (JMenuBar). Die Menüleiste ist jedoch optional. Die oberste Schicht ist der sogenannte GlassPane. Dieser liegt, wie eine durchsichtige Scheibe, direkt über dem ContentPane. Alle Panes zusammen bilden den Frame.

In der Regel wird nur auf den ContentPane, dessen Bedienelemente und seine optional vorhandene Menüleiste zugegriffen.

Schauen wir uns nun einmal ein Beispiel an, wie man einen einfachen Frame erstellen kann:

// Import-Anweisung für unseren JFrame
import javax.swing.JFrame;
 
public class FrameBeispiel
{
    public static void main(String[] args)
    {
        /* Erzeugung eines neuen Frames mit dem 
           Titel "Beispiel JFrame " */       
        JFrame meinFrame = new JFrame("Beispiel JFrame");
        /* Wir setzen die Breite und die Höhe 
           unseres Fensters auf 200 Pixel */        
        meinFrame.setSize(200,200);
        // Wir lassen unseren Frame anzeigen
        meinFrame.setVisible(true);
    }
}

Wir erzeugen ein JFrame-Objekt mit dem new-Operator und übergeben dem Konstruktor unseren Titel. Anschließend setzen wir die Breite und die Höhe auf jeweils 200 Pixel mit der Methode setSize. Zum Schluss lassen wir uns über die Methode setVisible den Frame anzeigen.

Nach dem Ausführen des obigen Quelltextes sollten Sie folgendes Bild angezeigt bekommen:

JFrame Beispiel

Wir haben nun zwar ein Fenster erstellt, aber wir wissen noch nicht, wie wir dieses auch mit Elementen füllen können. Wir wollen Ihnen hier an einem sehr einfachen Beispiel demonstrieren, wie man Elemente ohne großen Aufwand und ohne ein besonderes Layout hinzufügen kann:

Die Methode add fügt neue Komponenten unserem Frame hinzu. Wir erweitern nun das obige Beispiel:

// Import-Anweisung für unseren JFrame
import javax.swing.JFrame;
// Import-Anweisung für unser JLabel
import javax.swing.JLabel;
 
public class FrameBeispiel
{
     public static void main(String[] args)
    {
        /* Erzeugung eines neuen Frames mit dem 
           Titel "Mein JFrame Beispiel" */             
        JFrame meinFrame = new JFrame("Mein JFrame Beispiel");
        /* Wir setzen die Breite und die Höhe 
           unseres Fensters auf 200 Pixel */          
        meinFrame.setSize(200,200);
        /* Hinzufügen einer einfachen Komponente 
           (hier: JLabel) */
        meinFrame.add(new JLabel("Beispiel JLabel"));
        // Wir lassen unseren Frame anzeigen
        meinFrame.setVisible(true);
    }
}

Nun enthält unser Beispiel-Fenster eine JLabel-Komponente (Beschriftung). Wie Sie sehen, haben wir hier nur eine import-Anweisung für unser JLabel hinzugefügt und die Methode add aufgerufen, der wir als Parameter ein Objekt der Klasse JLabel übergeben haben.  Dem Konstruktur der Klasse JLabel haben wir dabei den gewünschten Text für die JLabel-Komponente übergeben.

Beim Ausführen des veränderten Quellcodes erhalten wir nun folgendes Bild:

JFrame Beispiel mit JLabel

Über die Methode add können auf diese Weise beliebige Bedienelemente unserer Oberfläche hinzugefügt werden. Wir werden in den späteren Kapiteln der Bedienelemente jeweils zeigen, wie das jeweilige Bedienelement funktioniert und einem Frame hinzugefügt werden kann. Außerdem werden Sie später erfahren, wie Sie Einfluss auf die Positionierung der Elemente über sogenannte Layouts nehmen.