Widget-toiminnot

SWT-ympäristössä on useita monipuolisia tuoteominaisuuksia, mutta suorituskykyisten sovellusten toteutukseen tarvitaan vain perustietämys järjestelmän ydinosasta: widget-objekteista, asetteluista ja tapahtumista.

Widget-objektien sovellusrakenne

Kun tuotat käyttöliittymän elementtejä käyttämällä ympäristön työympäristölaajennuksia, työympäristö hoitaa puolestasi SWT-ympäristön käynnistystoimet.

Jos kirjoitat SWT-sovellusta alusta alkaen työympäristön ulkopuolella, tarvitset enemmän tietoja SWT-sovellusten rakenteesta.

Tyypilliseen itsenäiseen SWT-sovellukseen liittyy seuraavanlainen rakenne:

Seuraava katkelma on muokattu org.eclipse.swt.examples.helloworld.HelloWorld2-sovelluksesta. Sovellus tuo vain näyttöön merkkijonon "Hei maailma", joten sen ei tarvitse rekisteröidä widget-tapahtumia.

   public static void main (String [] args) {
      Display display = new Display ();
      Shell shell = new Shell (display);
   Label label = new Label (shell, SWT.CENTER);
      label.setText ("Hei maailma");
         label.setBounds (shell.getClientArea ());
      shell.open ();
      while (!shell.isDisposed ()) {
         if (!display.readAndDispatch ()) display.sleep ();
      }
      display.dispose ();
   }

Näyttö (Display)

Display-luokka esittää SWT-ympäristön ja perustana olevan käyttöympäristön graafisen käyttöliittymän välistä yhteyttä. Display-luokkien avulla hallitaan yleensä käyttöympäristön tapahtumasilmukkaa ja ohjataan tiedonvälitystä käyttöliittymäsäikeen ja muiden säikeiden välillä. (Lisätietoja käyttöliittymän säikeistä on Säikeet-ohjeaiheessa.)

Useimmissa sovelluksissa voidaan noudattaa edellä kuvattua mallia. Display-olio on luotava ennen ikkunoiden luontia, ja se on hävitettävä, kun komentoliittymä suljetaan. Display-luokkaan ei tarvitse kiinnittää juuri enempää huomiota, ellet suunnittele monisäikeistä sovellusta.

Komentoliittymä (Shell)

Komentoliittymä (shell) on "ikkuna", jota käyttöjärjestelmän ikkunoiden hallintaohjelma hallitsee. Ylätason komentoliittymät ovat komentoliittymiä, jotka on luotu display-luokan aliobjekteina. Näitä ikkunoita käyttäjät liikuttavat, pienentävät ja suurentavat sovellusta käyttäessään. Toissijaiset komentoliittymät ovat komentoliittymiä, jotka on luotu toisen komentoliittymän aliobjekteina. Näitä ikkunoita käytetään yleensä valintaikkunan ikkunoina tai muina väliaikaisina ikkunoina, jotka ovat olemassa vain toisen ikkunan kontekstissa.

Pääobjektit ja aliobjektit

Kaikilla sellaisilla widget-objekteilla, jotka eivät ole ylimmän tason komentoliittymiä, on oltava pääobjekti. Ylimmän tason komentoliittymillä ei ole pääobjektia, mutta ne luodaan yhdessä tietyn Display-olion kanssa. Voit käsitellä tätä display-oliota käyttämällä getDisplay()-metodia. Kaikki muut widget-objektit luodaan ylimmän tason komentoliittymien jälkeläisinä (suorina tai epäsuorina).

Widget-yhdistelmäobjektit ovat widget-objekteja, joilla voi olla aliobjekteja.

Sovellusikkunaa voi pitää widget-objektirakenteena tai hierarkiana, jonka juurena on komentoliittymä. Sovelluksen monimutkaisuuden mukaan komentoliittymällä saattaa olla yksi aliobjekti, useita aliobjekteja tai sisäkkäisiä yhdistelmäkerroksia, joissa on aliobjekteja.

Tyylit

Jotkin widget-objektien ominaisuudet on määritettävä widget-objektin luonnin yhteydessä, eikä niitä voi muuttaa jälkikäteen. Luettelossa voi esimerkiksi tehdä yhden valinnan tai useita valintoja, ja luetteloon joko liittyy tai ei liity selauspalkkeja.

Nämä ominaisuudet eli tyylit määritetään konstruktorissa. Kaikkiin widget-objektien konstrukteihin liittyy int-argumentti, joka määrittää bittitasoisella OR-operaattorilla kaikki halutut tyylit. Joissakin tapauksissa tiettyä tyyliä pidetään vihjeenä, eli se ei ehkä ole käytettävissä kaikissa käyttöympäristöissä ja se ohitetaan huomaamattomasti sellaisissa ympäristöissä, joissa kyseistä tyyliä ei tueta.

Tyylivakiot ovat SWT-luokan julkisia staattisia kenttiä. Kunkin widget-luokan sallittujen vakioiden luettelo on SWT-ympäristön API-tiedoissa.

Resurssien hävitys

SWT-ympäristön taustalla olevat käyttöympäristöt edellyttävät käyttöjärjestelmäresurssien erillistä varausta ja vapautusta. SWT-ympäristössä käyttöympäristön sovellusrakenne toistetaan widget-työkaluissa, joten SWT edellyttää, että kaikki varatut käyttöjärjestelmäresurssit vapautetaan erikseen. SWT-ympäristössä Widget.dispose()-metodin avulla vapautetaan resurssit, jotka liittyvät tiettyyn työkalujen objektiin.

Peukalosääntönä voidaan todeta, että jos käyttäjä luo objektin, käyttäjän tulee myös hävittää se. Seuraavassa on joitakin pääsääntöjä, jotka kuvaavat tätä käytäntöä tarkemmin:

Näihin sääntöihin liittyy yksi poikkeus. Yksinkertaiset dataobjektit, kuten suorakulmio (rectangle) ja piste (point), eivät käytä käyttöjärjestelmän resursseja. Niillä ei ole dispose()-metodia, eikä niitä tarvitse vapauttaa. Voit tarkistaa tiedot kunkin luokan javadoc-kuvauksesta.

Lisätietoja on englanninkielisessä artikkelissa Managing operating resources.