Vanligen är det bäst att hantera enkel placering av gränssnittskontroller i en händelselyssnare för storleksändring. Det finns emellertid några gemensamma mönster som används av tillämpningar vid placering av gränssnittskontroller. Dessa mönster kan struktureras som konfigurerbara layoutalgoritmer som kan återanvändas i många olika tillämpningar.
SWT definierar layouter som ger allmän ändamålsplacering och storleksbestämning av underordnade gränssnittskontroller i en sammansättning. Layouter är underklasser till abstraktklassen Layout. SWT:s standardlayouter finns i paketet org.eclipse.swt.layout.
Det finns vissa allmänna definitioner som används vid storleksändring och placering av gränssnittskontroller:
Dessa begrepp är relevanta för tillämpningar, oavsett om en layout används. Du kan tänka på en layout som ett bekvämt sätt att paketera storleksändringsfunktioner för återanvändning.
Vissa ytterligare begrepp introduceras med layouter:
I artikeln Understanding layouts in SWT finns ytterligare beskrivningar och bilder som visar dessa begrepp.
I följande kodstycke visas det enkla fallet med en tillämpning som använder en återkoppling för storleksändring för att anpassa storleken på en etikett till storleken på överordnat skal:
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 ()); } });
I nästa kodstycke används en layout för att åstadkomma samma effekt:
Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); shell.setLayout (new FillLayout ());
Även i detta enkla exempel minskas tillämpningskoden med hjälp av en layout. Med mer komplicerade layouter vinner du ännu mera.
I följande tabell summeras de standardlayouter som finns i SWT.
Layout |
Ändamål |
---|---|
FillLayout | Lägger ut kontroller på en enda rad eller kolumn, de påtvingas samma storlek. |
FormLayout | Placerar underordnade objekt med hjälp av FormAttachments för att valfritt konfigurera de vänstra, övre, högra och nedre kanterna för varje underordnat objekt. |
GridLayout | Placerar underordnade objekt i rader och kolumner. |
RowLayout | Placerar underordnade objekt i horisontella rader eller vertikala kolumner. |