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

Business GPT: Generative KI für den Unternehmenseinsatz

Nutzung einer unternehmenseigenen GPT-Umgebung für sicheren und datenschutzkonformen Zugriff.

2 Tagen ago

Alphabet übertrifft die Erwartungen im ersten Quartal

Der Umsatz steigt um 15 Prozent, der Nettogewinn um 57 Prozent. Im nachbörslichen Handel kassiert…

5 Tagen ago

Microsoft steigert Umsatz und Gewinn im dritten Fiskalquartal

Aus 61,9 Milliarden Dollar generiert das Unternehmen einen Nettoprofit von 21,9 Milliarden Dollar. Das größte…

5 Tagen ago

Digitalisierung! Aber wie?

Mehr Digitalisierung wird von den Unternehmen gefordert. Für KMU ist die Umsetzung jedoch nicht trivial,…

5 Tagen ago

Meta meldet Gewinnsprung im ersten Quartal

Der Nettoprofi wächst um 117 Prozent. Auch beim Umsatz erzielt die Facebook-Mutter ein deutliches Plus.…

6 Tagen ago

Maximieren Sie Kundenzufriedenheit mit strategischem, kundenorientiertem Marketing

Vom Standpunkt eines Verbrauchers aus betrachtet, stellt sich die Frage: Wie relevant und persönlich sind…

6 Tagen ago