Java: Benutzeroberflächen gestalten mit Gridbag-Layout


In diesem Abschnitt wird grundlegendes Wissen über das Erstellen von Fenstern und Komponenten vorausgesetzt.

Am Ende dieses Artikels sollte der Leser die Fähigkeit haben, Komponenten innerhalb eines Rahmens zu positionieren. Demnächst wird dann diese Benutzerschnittstelle in weiteren Artikeln ausgebaut. Zuletzt wird sie sich hoffentlich so verhalten, wie man es von einer ordentlichen Benutzeroberfläche erwartet.

Zum besseren Verständnis des Ziels folgt hier in Gänze der Code, auf den hingearbeitet wird.

Die ersten Zeilen bis hin zum Konstruktor sollten nicht zuviel Kopfzerbrechen bereiten. Es handelt sich um recht gewöhnliche Importe und Variablengenerierungen.

Beim Konstruktor werden die Dinge jedoch interessant:


Container contentPane = getContentPanegetContentPane();
GridBagLayout gridbag = new GridBagLayout();
contentPane.setLayout(gridbag);

Zunächst nimmt man das Content-Pane des Gridbag-Window und legt ein Gridbag-Layout-Objekt an. Das geht ebenso vor sich wie zuvor das Anlegen von Grid-Layout- und Border-Layout-Objekten. Dann definiert man das Gridbag-Layout-Objekt als Layout des Content-Pane.


GridBagConstraintsGridBagConstraints c =
new GridBagConstraintsGridBagConstraints();

Nun folgt das einzige Objekt innerhalb des ganzen Vorgangs, Gridbag-Constraints. Mit diesem Objekt werden die Begrenzungen für alle Komponenten innerhalb des Gridbag-Layout bestimmt. Um einem Gridbag-Layout eine Komponente hinzuzufügen, muss man dieser zunächst ein Gridbag-Constraints-Objekt zuordnen.

Gridbag-Constraints hat elf Felder, die verändert werden können. Dazu gibt es noch eine Reihe von Konstanten, durch die die Belegungen vereinfacht werden. Die Felder sind:

  1. gridx – die Zeile, die eine Komponente im Gitter einnimmt.
  2. gridy – die Spalte, die eine Komponente im Gitter einnimmt.
  3. gridwidth – die Anzahl an Spalten, die eine Komponente einnehmen wird, analog zum Attribut colspan in HTML.
  4. gridheight – die Anzahl an Zeilen, die eine Komponente einnehmen wird, analog zum Attribut rowspan in HTML.
  5. weightx – teilt dem Layout-Manager mit, wie überschüssiger Platz in horizontaler Ausrichtung auf die Zellen verteilt wird.
  6. weighty – teilt dem Layout-Manager mit, wie überschüssiger Platz in vertikaler Ausrichtung auf die Zellen verteilt wird.
  7. anchor – teilt dem Layout-Manager mit, wo eine Komponente innerhalb ihrer Zelle platziert wird.
  8. fill – wie die Komponente sich verhalten soll, wenn der Anzeigebereich größer ist als die Komponente. Kann horizontal, vertikal oder in beide Richtungen füllen.
  9. insets – der außen zwischen Komponente und den Begrenzungen der Gitterzelle liegende Raum.
  10. ipadx – bestimmt, um wie viele Pixel sich die Komponente in horizontaler Richtung zusätzlich zur minimalen Breite vergrößert. Die horizontale Ausdehnung der Komponente beträgt mindestens deren Minimalbreite plus ipadx-Pixel.
  11. ipady – bestimmt, um wie viele Pixel sich die Komponente in vertikaler Richtung zusätzlich zur minimalen Höhe vergrößert. Die vertikale Ausdehnung der Komponente beträgt mindestens deren Minimalhöhe plus ipady-Pixel.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

2 Tagen ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

2 Tagen ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

2 Tagen ago

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

2 Tagen ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

2 Tagen ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

3 Tagen ago