Literatur

JSplitPane

Einen zweigeteilten Container stellt die Klasse javax.swing.JSplitPane bereit. Der JSplitPane wird häufig zur Trennung von Menüführung und Inhalt verwendet, es gibt aber auch weitere Einsatzgebiete.

Ein Beispiel für ein zweigeteiltes Fensters, wie man es auch mit einem JSplitPane realisieren kann, ist der Windows-Explorer. Dort können Sie auf der linken Seite den Ordner auswählen, während auf der rechten Seite die entsprechenden Dateien des selektierten Verzeichnisses angezeigt werden.

Der JSplitPane lässt sowohl eine horizontale als auch eine vertikale Teilung zu. Die Teilung kann man entweder fest vorgeben oder flexibel gestalten.

Wird ein JSplitPane über den parameterlosen Standardkonstruktor erzeugt, so werden die beiden Teilbereiche horizontal nebeneinander angeordnet. Der Wert für newContinuousLayout wird standardmäßig auf false gesetzt, was bedeutet, dass die beiden Teilbereiche bei einer Verschiebung des Trenners erst dann neu gezeichnet werden, wenn die Verschiebung beendet ist, also die Maustaste losgelassen wurde.

Es gibt jedoch noch andere Konstruktoren, über die Einfluss auf die Ausrichtung und das Layout des JSplitPanes genommen werden kann.

Konstruktor Beschreibung
JSplitPane(int newOrientation) Über den Parameter newOrientation kann eingestellt werden, ob die Trennung horizontal oder vertikal erfolgen soll. Die Klasse JSplitPane bietet hierzu die Konstanten JSplitPane.HORIZONTAL_SPLIT und JSplitPane.VERTICAL_SPLIT
JSplitPane(int newOrientation, boolean newContinuousLayout) Hier kann man mit dem zweiten Parameter steuern, ob die Inhalte der beiden Hälften während der Bewegung des Trenners stetig aktualisiert werden sollen (true) oder erst, nachdem die komplette Bewegung des Trenners beendet wurde.
JSplitPane(int newOrientation, boolean newContinuousLayout, Component newLeftComponent, Component newRightComponent) Bei diesem Konstruktor können gleichzeitig die Komponenten für die beiden Seiten übergeben werden.
JSplitPane(int newOrientation, Component newLeftComponent, Component newRightComponent)  Ähnlich dem obigen Konstruktor, allerdings ohne den Parameter newContinuousLayout, der hier automatisch auf false gesetzt wird.


Wir wollen nun in einem Beispiel ein JSplitPane mit einer horizontalen Trennung erstellen:

 
// Import-Anweisungen
import java.awt.Color;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
 
public class JSplitPaneBeispiel
{
    // main-Methode
    public static void main(String[] args)
    {
        // Erzeugung eines neuen Dialoges
        JDialog meinJDialog = new JDialog();
        meinJDialog.setTitle("JSplitPane Beispiel");
        meinJDialog.setSize(450,300);
 
        // Erzeugung zweier JPanel-Objekte
        JPanel panelRot = new JPanel();
        JPanel panelGelb = new JPanel();
        // Hintergrundfarben der JPanels werden gesetzt
        panelRot.setBackground(Color.red);
        panelGelb.setBackground(Color.yellow);
        //Beschriftungen für die beiden Seiten werden erstellt
        JLabel labelRot = new JLabel("Ich bin auf der roten Seite");
        JLabel labelGelb = new JLabel("Ich bin auf der gelben Seite");
        //Labels werden unseren Panels hinzugefügt
        panelRot.add(labelRot);
        panelGelb.add(labelGelb);
 
        // Erzeugung eines JSplitPane-Objektes mit horizontaler Trennung
        JSplitPane splitpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
        // Hier setzen wir links unser rotes JPanel und rechts das gelbe
        splitpane.setLeftComponent(panelRot);
        splitpane.setRightComponent(panelGelb);
 
        // Hier fügen wir unserem Dialog unser JSplitPane hinzu
        meinJDialog.add(splitpane);
        // Wir lassen unseren Dialog anzeigen
        meinJDialog.setVisible(true);
 
    }
}

Wir erstellen zunächst zwei JPanes, die wir zur besseren Veranschaulichung mit einer roten bzw. gelben Hintergrundfarbe und einem eigenen JLabel versehen. Anschließend erzeugen wir ein JSplitPane-Objekt mit Hilfe des ersten Konstruktors der obigen Konstruktor-Tabelle. Schließlich setzen wir über die Methode setLeftComponent unser rotes JPanel  auf die linke Seite und mit setRightComponent unser gelbes JPanel auf die rechte Seite.

Die Oberfläche sollte nun so aussehen:

JSplitPane mit zwei JPaneln, horizontale Trennung

 

Vielleicht wird es Sie verwundern, dass die Trennlinie vertikal verläuft, obwohl wir dem Konstruktor die Konstante JSplitPane.HORIZONTAL_SPLIT übergeben haben. Die Bezeichnung horizontal bezieht sich jedoch auf die Ausrichtung der beiden Seiten. Bei der horizontalen Ausrichtung erfolgt die Anordnung der beiden Seiten nebeneinander und bei der vertikalen Ausrichtung übereinander.

Im Folgenden wollen wir noch einige ausgewählte Methoden der Klasse JSplitPane erläutern:

Methode Kurzbeschreibung
Component getBottomComponent() Diese Methode gibt den rechten bzw. den unteren Container zurück. Dieselbe Funktionalität bietet auch die Methode getRightComponent.
Component getLeftComponent() Diese Methoden gibt den linken bzw. den oberen Container zurück. Dieselbe Funktionalität bietet auch die Methode getTopComponent.
void setDividerLocation(int location) Über diese Methode kann man die Position des Trenners festlegen.
void setBottomComponent(Component comp) Diese Methode setzt den rechten bzw. den unteren Container. Dieselbe Funktionalität bietet auch die Methode setRightComponent.
void setLeftComponent(Component comp) Diese Methode setzt den linken bzw. den oberen Container. Dieselbe Funktionalität bietet auch die Methode setTopComponent.