Widget-objektien sijoittaminen on usein helpointa koonmuutostapahtumien kuuntelutoiminnon avulla. Sovellukset noudattavat kuitenkin tiettyjä malleja widget-objektien sijoittelussa. Näistä malleista voidaan rakentaa asettelun algoritmeja, jotka voidaan määrittää ja joita voidaan sitten käyttää useissa eri sovelluksissa.
SWT määrittää asetteluja, joiden avulla hoidetaan widget-aliobjektien yleissijoittelu ja koon määritys yhdistelmässä. Asettelut ovat abstraktin Layout-luokan aliluokkia. SWT-perusasettelut ovat paketissa org.eclipse.swt.layout.
Widget-objektien koonmääritykseen ja sijoittamiseen liittyy tiettyjä yleismäärityksiä:
Nämä käsitteet ovat sovellusten kannalta tärkeitä, käytettiinpä asettelua tai ei. Asettelua voi pitää kätevänä tapana pakata koonmuutostoiminnot uudelleenkäyttöä varten.
Asetteluihin liittyy tiettyjä lisäkäsitteitä:
Englanninkielisessä artikkelissa Understanding layouts in SWT on lisätietoja näistä käsitteistä sekä niihin liittyviä kuvia.
Seuraavassa koodikatkelmassa esitetään yksinkertainen tilanne, jossa sovellus käyttää resize-vastakutsua ja määrittää nimiön koon pääkomentoliittymän koon mukaiseksi:
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 ()); } });
Seuraava katkelma tekee samat toimet asettelun avulla:
Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); shell.setLayout (new FillLayout ());
Tässä yksinkertaisessakin esimerkissä layout-luokan käyttö vähentää sovelluksessa tarvittavaa koodia. Monimutkaisissa asetteluissa muutos on vielä suurempi.
Seuraavassa taulukossa on SWT-ympäristön layout-vakioluokkien tiivistelmä.
Asettelu |
Käyttötarkoitus |
---|---|
FillLayout | Asettelee ohjausobjektit yhdelle riville tai yhteen sarakkeeseen ja pakottaa ohjausobjektit samankokoisiksi. |
FormLayout | Sijoittaa aliobjektit käyttämällä FormAttachments-luokkaa ja määrittää valinnaisesti kunkin aliobjektin vasemman ja oikean reunan sekä ylä- ja alareunan. |
GridLayout | Sijoittaa aliobjektit rivien ja sarakkeiden mukaan. |
RowLayout | Sijoittaa aliobjektit joko vaakariveille tai pystysarakkeisiin. |