Tilpassede layout
Sommetider kan du få behov for at skrive din egen tilpassede Layout-klasse. Det er mest relevant, når du har et komplekst layout, der bruges mange forskellige steder i programmet. Bemærk, at medmindre du skriver et meget generisk layout, der skal bruges af flere sammensatte elementer, er det nogle gange nemmere at beregne størrelser på og placere underordnede i en resize-lytter.
Layout er ansvarlige for implementering af to metoder:
- computeSize(...) beregner bredde og højde af et rektangel, der omfatter alle sammensætningens underordnede, når deres størrelse er tilpasset, og de er placeret i henhold til layoutalgoritmen. Med hint-parametrene kan du begrænse bredden og/eller højden. Et layout kan f.eks. vælge at vokse i én dimension, hvis det er begrænset i den anden.
- layout(...) placerer og tilpasser størrelsen på sammensætningens underordnede. Et layout kan vælge at cache layoutrelaterede oplysninger, f.eks. det foretrukne omfang af de enkelte underordnede. Parameteren flushCache beder layoutet om at slette cachede data, hvilket er nødvendigt, når andre faktorer end størrelsen af sammensætningen er ændret, f.eks. oprettelse eller fjernelse af underordnede eller ændring af elementets font.
En tredje metode, flushCache(...), kan eventuelt implementeres for at rydde cachede data, der er knyttet til en bestemt kontrol. Ofte kan metoden computeSize() for et element koste mange ressourcer, og så kan layoutene cache resultater for at forbedre ydeevnen.
Tilpassede layout er beskrevet mere detaljeret i Layout i SWT.