TOnionLayout: ein neuer Layout-Manager für Swing-Anwendungen
Zwar wird JavaFX schon geraume Zeit als Nachfolger von Java Swing ins Spiel gebracht, verbreiteter sind Swing-Anwendungen allemal. Und neue Hilfemöglichkeiten wie TOnionLayout entstehen weiterhin.
- Alexander Neumann
Mit TOnionLayout gibt es einen neuen unter der GPL 2.0 stehenden Layout-Manager für Java-Swing-Anwendungen, der sich responsiv dem gegebenen Platz anpassen und ein hübsches Layout ausgeben soll sowie im Quellcode übersichtlich und daher einfach zu warten ist. Der Trick von TOnionLayout ist, dass obwohl das Layout "top down" (von außen nach innen) erstellt wird, jede Schicht alle ihre Inhalte nach der minimalen und maximalen Größe befragt. Um eine gute Performance zu erreichen, werden diese Werte gespeichert. Nur wenn ein Objekt zum Layout hinzugefügt oder weggenommen wird, werden die gespeicherten Werte von der betroffenen Schicht und allen äußeren Schichten gelöscht.
TOnionLayout besteht aus zwei Layout-Managern:
- TrainLayout: eine Reihe von Komponenten von links nach rechts mit gleicher Höhe und individueller Breite.
- TotemLayout: eine Spalte von Komponenten von oben nach unten mit gleicher Breite und individueller Höhe.
TrainLayout und TotemLayout lassen sich offenbar beliebig ineinander schachteln. TOnionLayout kann außerdem in einer JScrollPane platziert werden. Wenn das Fenster verkleinert wird, dann minimiert sich zuerst das TOnionLayout, und erst danach erscheinen die Scrollleisten.
Für die ersten inneren Objekte eines TOnionLayouts lassen sich Minimum- und Maximum-Größe angeben. Ohne diese Angabe wird der Platz gleichmäßig verteilt. Es ist auch möglich, Objekte mit und ohne Angabe zu mischen. JButtons sind in ein JPanel mit FlowLayout zu platzieren, die Größenangaben sollten dann im JPanel erfolgen. JTables muss man wiederum in ein JPanel mit BorderLayout in die CENTER-Komponente platzieren. Die Größenangaben sollten dann ebenfalls im JPanel erfolgen.
Die Größenangaben eines TOnionLayouts müssen nur ungefähr zusammenpassen. Die pixelgenaue Ausrichtung übernimmt das Layout. Fehler in der Angabe von Größen, also Größenangaben, die nicht zusammenpassen, werden automatisch korrigiert. Wenn ein Minimum größer ist als ein Maximum, wird Maximum gleich Minimum gesetzt. Bei der Verwendung der Testklassen TrainLayoutTest und TotemLayoutTest werden solche Fehler auf der Konsole ausgegeben. Ist eine TOnion-Schicht manchmal gefüllt und manchmal leer, lässt sich dort auch eine minimale und maximale Größe setzen. Diese wird nur im leeren Zustand berücksichtigt. (ane)