On Wed, 07 Mar 2001 21:57:55 GMT, berlinerwurst@yahoo.com (Kasper M)
wrote:
>Jeg har lavet en applikation i java og brugt awt. Jeg har dog
>afskyelig mange problemer med det designmæssige... Jeg bruger
>GridBagLayout, og ved mine JLists ændrer højden sig efter hvor meget
>data der er i, og i min TextAreas ændres størelsen alt efter hvor
>meget man smider i det?!
>
>Er der nogle simple måder at lave det så det har den størelse man
>oprindeligt giver det, og ikke ændrer sig med teksten deri?! (eller er
>det lettere at bruge en anden layout manager)
>
>Jeg er på kanten af selvmord, så alt hjælp er værdsat!
Så må vi hellere hjælpe...
Din JList ændrer sig, fordi størrelsen afhænger af indholdet. For at
give listen en fast størrelse, så brug jlist.setMinimumSize() og
jlist.setMaximumSize(), eller jlist.FixedCellWidth() /
jlist.FixedCellHeight() / jlist.VisibleRowCount().
>Kasper
vh. ld
>(Hvordan fungerer GridBagConstraints insets egentlig... jeg kan ikke
>få det til at virke med den, og fatter ikke hvad der står i suns API
>Specification?!)
GBL spørger hvor stor din komponent er, og giver plads til din
komponents størrelse + insets.
dvs. at hvis din komponent er 100x100 pixels, og dine insets er
5,10,15,20, så reservere GBL (5+100+15)x(10+100+20) = 120x130 pixels
til din komponent, og din komponent bliver placeret i 5,10 positionen
i det felt der fylder 120x130. Dvs. at der kommer en tom 'ramme'
omkring din komponent i forhold til de andre, der er hhv. 5,10,15,20
bred på hver af de fire leder.
Det er bare det, at dette er _minimums_ størrelsen, så gbl kan finde
på at give dig mere plads, hvis der mere plads, og der ikke er andre
komponenter der vil have den overskydende plads.
Normalt bruger man insets til f.eks. at space komponenter med 2 pixels
mellemrum, men man kan f.eks. bruge dem til at få komponenter til at
overlappe. Forestil dig at du har to text fields over hindanden:
+-----------+
|textfield 1|
+-----------+
+-----------+
|textfield 2|
+-----------+
Det ser ikke så kønt ud, da der er to kanter lige over hindanden
(Imellem de to komponenter). Så hvis man bruger en inset på (0,-1,0,0)
på den nederste komponent vil det komme til at se sådan ud:
+-----------+
|textfield 1|
+-----------+
|textfield 2|
+-----------+
Måske lidt pænere, men man skal så også sørge for at have en pæn
border som kan tåle at blive overlappet, uden at den bliver grim
(f.eks. lineborder).
vh. ld
--
"Time is the fire in which we burn"
|