Tilpassede layouter
Iblant kan det være at du trenger å skrive en egen tilpasset
Layout-klasse.
Dette er mest hensiktsmessig når du har en kompleks layout som brukes på en rekke forskjellige steder
i applikasjonen. Merk at med mindre du skriver en svært generell layout som skal brukes
av flere
Composite-widgeter,
er det av og til enklere å beregne størrelser og plassering av underordnede objekter i en
lytter for endring av størrelse.
Layouter har ansvar for implementering av to metoder:
- computeSize(...) beregner bredden og høyden til et rektangel
som inneholder alle underordnede objekter for en kompositt, når disse er tildelt
størrelse og er plassert i henhold til layoutalgoritmen. Med hint-parameterne
kan du begrense bredden og/eller høyden. For eksempel kan en
layout øke i en dimensjon hvis den begrenses i en annen dimensjon.
- layout(...) plasserer og angir størrelsen på komposittens
underordnede objekter.
En layout kan bufre layoutrelatert informasjon, for eksempel foretrukket
omfang for hvert av de underordnede objektene. Parameteren
flushCache
angir at
Layout
skal slette bufrede data. Dette er nødvendig når andre faktorer utover størrelsen
på kompositten er endret, for eksempel ved opprettelse eller fjerning av underordnede
objekter eller ved en endring av widget-fonten.
Det finnes også en tredje metode, flushCache(...), som valgfritt
kan implementeres for å fjerne bufrede data som er tilknyttet en bestemt kontroll.
Siden metoden computeSize() for en widget ofte er kostbar, kan layouter bufre resultater
for å forbedre ytelsen.
Du finner en nærmere beskrivelse av tilpassede layouter i
Understanding
layouts in SWT.