# setPreferredSize(), setMaximumSize() ohne Funktion?



## Donut (9. Okt 2005)

Hiho!
ich mal wieder.

Ich hab nu ein Fenster-Programm mit GridBagLayout.
Durch eine Komponente in einer anderen Zeile wird die Breite einer 'Zellen' pratisch festgelegt.

Jetzt habe ich einen Button ein paar Zeilen tiefer. Im moment ist es so, dass er die Ganze Zelle ausfüllt (in der Breite). Er ist damit viel zu breit. Wenn ich jedoch versuche den Button mit .setPreferredSize() oder gar .setMaximumSize() zu begrenzen tut sich:
gar nichts.

Wie schafft es der Layout-Manager die vorgegebenen Werte zu überscheiben und wie verhindere ich dies?


----------



## Mag1c (9. Okt 2005)

Hi,

wie sehen den für den Button die GridBagConstraints aus ? Insbesondere der Wert in "fill" sollte ausschlaggebend für das von dir beschriebene Verhalten sein.

Gruß
Mag1c


----------



## KISS (10. Okt 2005)

http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html
section: Providing Size and Alignment Hints


----------



## Donut (10. Okt 2005)

hm achsooo
Ich hatte c.fill = GridBagConstraints.HORIZONTAL;
mit c.fill = GridBagConstraints.NONE; geht es tatsählich.

aber warum ist hier das Layout 'mächtiger' als die Komponente? ich meine, die Komponente ist hier doch sozusagen das untergeordnete Objekt und sollte doch, wenn eigene Werte zugewiesen Werte diese vor dem Allgemeinen durchsetzten.
Oder anders gefragt: is das immer so?


----------



## Mag1c (10. Okt 2005)

Hi,

also der LayoutManager nutz die Werte der Komponenten für die Anordnung. Ich gebe dir recht, daß er hier ein MaximumSize respektieren sollte. Nun tut ers scheinbar nicht  :autsch: und das ist sicher nicht als Regel anzusehen. Sonst wäre ja MaximumSize überflüssig 

Übrigens steht in der API zu GridBagConstraints explizit drin, daß die Komponente entsprechend resized() wird. So gesehen, ist es nun wieder richtig, was der LM macht  :autsch: 

Gruß
Mag1c


----------

