Asettelut

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.