Mehr über Gridbag-Layout: RSS-Feeds integrieren


Am Ende des letzten Artikels über Gridbag-Layout stand ein Fenster, das dem gewünschten Ergebnis ähnlich sah, aber noch nicht funktionsfähig war. Dieses Mal wird das Fenster fertiggestellt.

Fill und Weight

Wenn man das Fenster vergrößert, das mit dem Code vom letzten Mal erzeugt wurde, bleiben die Komponenten in der Mitte des Fensters. Sie behalten auch ihre ursprüngliche Größe bei. Damit sich das ändert, müssen die Komponenten mit Fill- und Weight-Werten versehen werden.

Der Fill-Wert beschreibt, wie sich die Komponente verhält, wenn die Darstellungsfläche größer ist als die Komponente. Die weightx– und weighty-Werte bestimmen, wie überschüssiger vertikaler oder horizontaler Platz gefüllt werden soll.

Bei einem erneuten Blick auf das gewünschte Ergebnis sieht man, dass die Label, Combo-Boxen, Tasten und Textfelder am oberen Fensterrand unverändert bleiben. Der zusätzliche Platz wird von der Tabelle und dem Label mit dem Bild eingenommen.

Bevor man diesen Variablen Werte zuordnet, sollte man registrieren, dass die Tabelle und das Label mit dem Bild mit Rollbalken versehen sind. Daher müssen sie in einem JScroll-Pane untergebracht werden. Hier folgt der Code für die Tabelle. Er ist fast identisch mit dem für das Label.


JScrollPane scrollPane = new JScrollPane(resTable);
scrollPane.setMinimumSize(new Dimension(450, 110));
....
gridbag.setConstraints(scrollPane, c);
contentPane.add(scrollPane);

Als nächstes muss der verfügbare Platz gefüllt und die Rahmengröße vernünftig angepasst werden. Der folgende Code wird an die Tabelle und das Label mit dem Bild angefügt. Der fill-Wert müsste jedoch zurückgesetzt werden, wenn sich im Code eine Komponente zwischen den beiden befände.


c.fill = GridBagConstraints.BOTH;

Da die gegenwärtigen Abmessungen der Tabelle passend sind, muss sich eigentlich nur das Image-Label beim Verändern der Größe ausdehnen und zusammenziehen. Daher wird dem Image-Label folgender Code angefügt:


c.weightx = 1;
c.weighty = 1;

Allerdings sagt dies nicht viel über das Weight-Element aus. Wenn in einem Gridbag-Layout Weight zugeordnet wird, muss es in jeder Zeile und Spalte 1 ergeben. Wenn die Tabelle sich vertikal auf der Hälfte des Labels mit dem Bild ausdehnen sollte, würde man den folgenden Code verwenden:


//For the JTable
c.weighty = 0.33;
//For the image label
c.weighty = 0.67;

An dieser Stelle findet viel von dem „Voodoo“ statt, von dem bei Gridbag-Layout mitunter die Rede ist. Deswegen ist es günstig, eine Skizze des ursprünglichen Entwurfs anzufertigen. Sie ist besonders nützlich, um sich das Gitter beim Zuweisen von Werten für die Weight-Elemente bildlich vorzustellen. Es war noch nie von Vorteil, GUIs (grafische Benutzerschnittstellen) aufs Geratewohl zu programmieren. Bei Gridbag-Layout ist das erst recht so.

Die letzten Änderungen, die für das gewünschte GUI vorgenommen werden müssen, sind die Ausrichtung der tag– und tagmode-Label nach rechts und das Erzeugen von Zwischenräumen um diese Komponenten herum.

Die Ausrichtung ist leicht zu bewerkstelligen:


tagLbl.setHorizontalAlignment(SwingConstants.RIGHT);
tagModeLbl.setHorizontalAlignment(SwingConstants.RIGHT);

Zum Erzeugen der Zwischenräume um die Komponenten herum werden Insets verwendet. Ein Inset gibt an, wie viel Zwischenraum sich an der Kante einer Komponente befindet. Die Parameter lauten oben, links, unten, rechts.

Das folgende Inset wird dem tag-Label zugeordnet:


c.insets = new Insets(5,5,5,15);

Es wird zurückgesetzt, sobald das Textfeld instantiiert wird. Dabei befindet sich das Inset auf dem tag-Label und dem tag-mode-Label:


c.insets = new Insets(0,0,0,0);

Und das war’s. Das GUI sollte nun das gewünschte Aussehen haben.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

KI-gestütztes Programmieren bringt IT-Herausforderungen mit sich

OutSystems-Studie: 62 Prozent der Befragten haben Sicherheits- und Governance-Bedenken bei Softwareentwicklung mit KI-Unterstützung.

3 Tagen ago

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

6 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

7 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

7 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

7 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

1 Woche ago