Literatur

JInternalFrame

Ein JInternalFrame ist vergleichbar mit einem JFrame. Der Unterschied besteht darin, dass es sich um ein internes Fenster handelt, das von einem Hauptfenster abhängig ist. Die Klasse JInternalFrame bietet die folgenden Konstruktoren:

Konstruktor Kurzbeschreibung
JInternalFrame() Der Standardkonstruktor erstellt einen JInternalFrame, welcher weder in der Größe veränderbar, schließbar, maximierbar noch minimierbar ist und keinen Titel besitzt.
JInternalFrame(String title) Hier wird der Titel übergeben, den der JinternalFrame tragen soll.
JInternalFrame(String title, boolean resizable) Über diesen Konstruktor kann angegeben werden, ob das interne Fenster vergrößert oder verkleinert werden kann.
JInternalFrame(String title, boolean resizable, boolean closable) Der Kontruktor verfügt über einen weiteren Parameter, über den festgelegt wird, ob der Frame geschlossen werden kann.
JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable) Über diesen Konstruktor kann man zusätzlich die Maximierbarkeit einstellen.
JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable) Über diesen Konstruktor kann man zusätzlich die Minimierbarkeit einstellen.

Nachfolgend finden Sie einige wichtige Methoden, die im Umgang mit JInternalFrames häufig benötigt werden:

Methode Kurzbeschreibung
public void toBack() Der JInternalFrame wird nach hinten gesetzt.
public void toFront() Der Frame wird nach vorne gesetzt.
public boolean isSelected() Gibt true zurück, wenn der Frame gerade aktiv ist.
public void show() Macht das Fenster sichtbar, falls es das noch nicht ist, und bringt es nach vorne.
public void hide() Das Fenster wird versteckt.
JDesktopPane getDesktopPane() Gibt den JDesktopPane zurück, auf dem der Frame sich befindet

Nachfolgend ein einfaches Beispiel, wie man einen JDesktopPane in Verbindung mit mehreren internen Fenstern in Java implementiert:

 
// Import-Anweisungen
import java.awt.Color;
import javax.swing.*;
 
public class JDesktopPaneBeispiel
{
    // main-Methode
    public static void main(String[] args)
    {
        // Erzeugung eines neuen Dialoges
        JDialog meinJDialog = new JDialog();
        meinJDialog.setTitle("JDesktopPane Beispiel");
        meinJDialog.setSize(450,300);
 
        // JDesktopPane wird erstellt
        JDesktopPane deskPane = new JDesktopPane();
 
        // Hintergrundfarbe wird auf blau gesetzt
        deskPane.setBackground(Color.blue);
 
        //JInternalFrame wird erstellt
        JInternalFrame inFrame1 = new JInternalFrame("Dokument 1", true, 
            true, true, true);
        JInternalFrame inFrame2 = new JInternalFrame("Dokument 2");
 
        //JInternalFrames werden unserem JDesktopPane hinzugefügt
        deskPane.add(inFrame1);
        deskPane.add(inFrame2);
 
        //Größe der JInternalFrames wird gesetzt
        inFrame1.setSize(200,200);
        inFrame2.setSize(200,200);
 
        //Position der JInternalFrames wird gesetzt
        inFrame1.setLocation(0,0);
        inFrame2.setLocation (200,0);
 
        //JInternalFrames werden sichtbar gemacht
        inFrame1.show();
        inFrame2.show();
 
        // JDesktopPane wird dem Dialog hinzugefügt
        meinJDialog.add(deskPane);
 
        // Wir lassen unseren Dialog anzeigen
        meinJDialog.setVisible(true);
 
    }
}
 

Folgendes Bild sollte sich ergeben, wenn der obige Code ausgeführt wird:

Wir erzeugen einen JDesktopPane, den wir blau einfärben. Anschließend erstellen wir zwei JInternalFrames. Für den ersten Frame haben wir den Konstruktor mit den meisten Parametern verwendet. Da wir sämtliche Eigenschaften auf true gesetzt haben, kann das Fenster sowohl in der Größe verändert, minimiert und maximiert, als auch geschlossen werden.

Für die Erstellung des zweiten JInternalFrame haben wir den parameterlosen Standardkonstruktor eingesetzt. Da die genannten Eigenschaften standardmäßig auf false gesetzt sind, kann der Frame lediglich verschoben werden.

Den Fenstern haben wir zur besseren Demonstration eine feste Position zugeteilt, da sie sich sich sonst überlagern würden. Damit sie angezeigt werden, müssen sie explizit über show() oder setVisible(true) sichtbar gemacht werden.