Man kann für jede Instanz einer Komponente ein individuelles Gridbag-Constraints-Objekt anlegen. Das ist jedoch nicht zu empfehlen. Weit besser ist es, Voreinstellungen für das Objekt bei Aufruf festzulegen. Dann verändert man bei den einzelnen Komponenten die gewünschten Felder. Das ist hauptsächlich so, weil einige Felder, wie insets, padx, pady und fill, im Allgemeinen für alle Komponenten gleich sind.
Es ist daher einfacher, einen Wert für ein Feld einzustellen und das geänderte Feld in die nächste Komponente zu übernehmen. Wenn man nach dem Einstellen zum ursprünglichen Wert des Feldes zurückkehren möchte, sollte man dies tun, bevor man die nächste Komponente hinzufügt. So kann man leichter einen Überblick darüber behalten, welche Veränderungen man vorgenommen hat. Außerdem lässt sich diesem Vorgehen leichter folgen als einer Reihe von Objektaufrufen mit elf Parametern.
Wenn das alles nun für völlige Verwirrung sorgt, kann man sich damit trösten, dass die wirklich harte Arbeit getan ist, sobald man die Gridbag-Constraints verstanden hat. Alles Weitere geht dann leicht von der Hand.
Da die Gridbag-Constraints nun recht ausführlich behandelt wurden, nun zu ihrer tatsächlichen Verwendung.
Man instanziiert hier lediglich das Label, weist ihm eine Position im Gitter zu, assoziiert es mit einem Constraint-Objekt und fügt es dem Content-Pane hinzu.
Für das nächste Label wird genauso verfahren:
Obwohl das gridx des Constraints-Objekts bereits auf 0 gestellt wurde, wird es hier noch einmal gesetzt. Das geschieht nur der besseren Lesbarkeit halber.
Als Nächstes wird das Textfeld, das das zu suchende Schlüsselwort aufnimmt, hinzugefügt. Darauf folgt die Combo-Box, die entscheidet, wie nach mehreren Schlüsselwörtern gesucht wird. Die Konzepte sind dieselben wie oben. Wenn das Textfeld sich über zwei Spalten erstrecken soll, muss der entsprechende Wert zurückgesetzt werden, bevor die Combo-Box hinzugefügt wird.
Danach werden einfach die restlichen Komponenten ebenfalls auf das Content-Pane gestellt. Dazu wendet man die bereits geschilderten Techniken an. Der Rest des Codes sollte keine Probleme mehr bereiten.
Die Oberfläche sollte nun in etwa wie beabsichtigt aussehen.
Die Geduld
Natürlich legt die Oberfläche noch kein intelligentes Verhalten an den Tag. Das sieht man, wenn man die Fenstergröße verändern will. Woran liegt das? Es liegt daran, dass man beim Contraints-Objekt noch vernünftige Werte für die Felder weightx, weighty und fill angeben muss.
Das gehört zu den Dingen, die später an dieser Stelle erklärt werden. Wer es aber schon einmal alleine versuchen will, kann sein Wissen auf den API-Seiten Gridbag-Layout und Gridbag-Constraints erweitern.
Neueste Kommentare
Noch keine Kommentare zu Java: Benutzeroberflächen gestalten mit Gridbag-Layout
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.