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

Gefahren im Foxit PDF-Reader

Check Point warnt vor offener Schwachstelle, die derzeit von Hackern für Phishing ausgenutzt wird.

3 Tagen ago

Bitdefender entdeckt Sicherheitslücken in Überwachungskameras

Video-Babyphones sind ebenfalls betroffen. Cyberkriminelle nehmen vermehrt IoT-Hardware ins Visier.

3 Tagen ago

Top-Malware in Deutschland: CloudEye zurück an der Spitze

Der Downloader hat hierzulande im April einen Anteil von 18,58 Prozent. Im Bereich Ransomware ist…

3 Tagen ago

Podcast: „Die Zero Trust-Architektur ist gekommen, um zu bleiben“

Unternehmen greifen von überall aus auf die Cloud und Applikationen zu. Dementsprechend reicht das Burg-Prinzip…

3 Tagen ago

Google schließt weitere Zero-Day-Lücke in Chrome

Hacker nutzen eine jetzt gepatchte Schwachstelle im Google-Browser bereits aktiv aus. Die neue Chrome-Version stopft…

3 Tagen ago

Hacker greifen Zero-Day-Lücke in Windows mit Banking-Trojaner QakBot an

Microsoft bietet seit Anfang der Woche einen Patch für die Lücke. Kaspersky-Forscher gehen davon aus,…

3 Tagen ago