GridBagLayout soll Breite beibehalten

Hallo zusammen,
Mich macht das GridBagLayout wieder verrückt:
Meine Komponenten werden nun mehr oder weniger so angezeigt wie ich sie haben will. Allerdings ändert sich bei einer dynamischen Veränderung der Inhalte einer ComboBox

(Strings mit max. 10 Zeichen länge zu Strings mit max. 30 Zeichen Länge)

auch die Breite des gesamten umgebenden Panels. Das will ich aber nicht, vor allem da die Gesamtbreite für alle Inhalte ausreicht. Kann ich irgenwie verhindern, dass der LayoutManager die Größenverhältnisse ändert?

Auf dem rechten Bild ist das rechte Panel etwas breiter als auf dem linken Bild.

Wenn du ganz bestimmte Breiten oder Grenzwerte festlegen möchtest, solltest du zusätzlich mit setPreferredSize(), setMaximumSize() und setMinimumSize() arbeiten.

Ich fang denmnächst einfach wieder mit dem NullLayout an, GridBags treiben mich noch in den Wahnsinn :open_mouth:

Gibt doch genug Alternativen: MigLayout, TableLayout, FormLayout…

TableLayout, das hatte ich schon wieder ganz vergessen :open_mouth: . Damit sollte es klappen. Die anderen beiden kenne ich nicht, die schaue ich mir auch mal an…

https://www.mail-archive.com/swing@eos.dk/msg00977.html

component.setPreferredSize(component.getPreferredSize());
könnte anscheinend als einfache Lösung helfen (ohne Probleme wie genaue Pixel-Breitenangabe)
und ausreichen um die Size (abgesehen von gewünschten Fenstergrößen-Änderungen) festzusetzen,

kannst ja mal für einzelne nervige Komponenten wie diese ComboBox ausführen,
und/ oder das umgebende Panel

ich habe bei mir eine eigene GridBagLayout-Basisklasse und habe es da gerade in die allgemeine add-Methode eingebaut, für jegliche Komponenten (*),
werde ich beobachten, von diesen dynamischen Änderungen halte ich auch nicht viel

(* aber nur wenn weightX gesetzt ist, denn direkt beim Einfügen sind bei mir die Komponenten meist noch leer, da wäre feste PreferredSize nahe 0 in manchen Anordnungen unschön :wink:
setPreferredSize() pauschal mit 0,0 dürfte also ähnliche Ergebnisse liefern)


ich lobe GridBagLayout nicht, aber ich komme damit zurecht,
wenn man an dem Punkt ‚verrückt‘ und ‚Wahnsinn‘ ist, dann muss man sich die Frage gefallen lassen warum nicht zu moderneren Alternativen wechselt,
http://forum.byte-welt.net/threads/11983-Probleme-mit-einem-GridbagLayout?p=93176&viewfull=1#post93176

Muaha es funktioniert, danke für den Tipp :slight_smile:
Ob ich mich nun doch noch für ein anderes Layout entscheide muss ich mir nun überlegen, aber erstmal ändern sich keine Panelgrößen mehr.

@Landei : Sind beim MigLayout die Zellen alle gleich groß oder muss ich die Größe über die maximale Komponentengröße fixieren? Das gefällt mir nämlich echt gut.

Auf jeden Fall mal Danke für eure Hilfe.

Kann ich nicht sagen, habe ewig kein Swing mehr gemacht.

Im Wiki haben wir mal eine ziemlich große Liste von derzeit verfügbaren LayoutManagern aufgebaut.
http://wiki.byte-welt.net/wiki/LayoutManager

Dort finden sich dann auch Beschreibungen, Links und Tutorials zu einzelnen LayoutManagern.