Anpassade layouter
Ibland kan du behöva skriva en egen Layout-klass. Detta är mest lämpligt när du har en komplicerad layout som används på många olika ställen i tillämpningen. Observera att om du inte skriver en mycket allmän layout som ska användas av flera Composite-gränssnittskontroller är det ibland enklare att beräkna storlek och placering av underordnade objekt i en storleksändringslyssnare.
Layouter ansvarar för implementering av två metoder:
- computeSize(...) beräknar bredd och höjd på en rektangel som innesluter alla de underordnade objekten i sammansättningen när de har fått sin storlek och placerats enligt layoutalgoritmen. Med hint-parametrarna kan du begränsa bredd och/eller höjd. En layout kan till exempel välja att växa i en dimension om den begränsas i en annan.
- layout(...) placerar och anger storlek på sammansättningens underordnade objekt.
En layout kan välja att cachelagra layoutrelaterad information, t.ex. rekommenderat område för vart och ett av de underordnade objekten. Med parametern flushCache ombes Layout
att tömma cachade data, vilket är nödvändigt när andra faktorer, utöver sammansättningens storlek har ändrats, t.ex. skapande eller borttag av underordnade objekt eller en ändring av teckensnittet för gränssnittskontrollen .
En tredje metod, flushCache(...), kan implementeras valfritt för att tömma alla cachade data för en viss kontroll.
Ofta kan computeSize()-metoden för en gränssnittskontroll vara dyr, så layouter kan cachelagra resultat för att förbättra prestanda.
Ytterligare information om egna layouter finns i artikeln Understanding
layouts in SWT.