Det er vanligvis best å håndtere enkel plassering av widgeter gjennom en hendelseslytter for endring av størrelse. Det finnes imidlertid vanlige mønstre som brukes når applikasjoner plasserer widgeter. Slike mønstre kan struktureres som konfigurerbare layoutalgoritmer som kan brukes på nytt av mange ulike applikasjoner.
SWT definerer layouter som gir allmenn formålsplassering og størrelse av underordede widgeter i en kompositt. Layouter er subklasser for den abstrakte Layout-klassen. SWTs standardlayouter finnes i pakken org.eclipse.swt.layout.
Det er noen generelle definisjoner som brukes ved endring av størrelse og plassering av widgeter:
Disse begrepene er relevante for applikasjoner uavhengig av om det brukes en layout. Tenk deg at en layout er en praktisk måte å pakke størrelsesendringsfunksjoner på for gjenbruk.
Det introduseres i tillegg bestemte begreper med layouter:
Du finner en nærmere beskrivelse og bilder av disse begrepene, i Understanding layouts in SWT.
Følgende kodesnutt viser et enkelt eksempel på en applikasjon som bruker et tilbakekall for endring av størrelse til å tilpasse en etikett til størrelsen i det overordnede skallet:
Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); shell.addControlListener (new ControlAdapter () { public void controlResized (ControlEvent e) { label.setBounds (shell.getClientArea ()); } });
Neste snutt bruker en layout for å oppnå samme effekt:
Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); shell.setLayout (new FillLayout ());
Selv i dette enkle eksempelet reduseres applikasjonskoden ved å bruke en layout. I mer komplekse layouter er forenklingen langt mer omfattende.
Tabellen nedenfor viser standardlayoutene som oppgis av SWT.
Layout |
Formål |
---|---|
FillLayout | Definerer kontroller i en enkeltrad eller -kolonne og tvinger frem samme størrelse. |
FormLayout | Plasserer det underordnede objektet ved hjelp av FormAttachments for valgfri konfigurering av venstre, øvre, høyre og nedre kanter i de underliggende objektene. |
GridLayout | Plasserer underordnede objekter i rader og kolonner. |
RowLayout | Plasserer underordnede objekter i vannrette rader eller loddrette kolonner. |