3.3 Jäsentietolomake

Tee seuraavanlainen lomake Swing -käyttöliittymäkomponenteilla käyttäen GribagLayout -layoutmanageria. Lomaketta voitaisiin käyttää, esim. pienen yhdistyksen jäsenrekisterin jäsenten tietojen lisäys/muutoslomakkeena.

Lomakkeella on seuraavat kentät:


Lomakkeen layout voisi olla esim. seuraavan kaltainen.

Jäsennro Tunnus
Etunimet Sukunimi
Tyyppi
Luottamustoimi
Puhelin Sähköposti

Lisäksi lomakkeella tulee olla napit 'Lisää', 'Päivitä', 'Talleta', 'Peru' ja 'Poista'.

Tyyppi- ja luottamustoimi-riveillä käyttäjä voi kirjoittaa arvoja 1. kenttään (esim. N tai U), mutta ei 2. kenttään. Käyttäjä ei myöskään saa muuttaa 'jäsennro' -kentän arvoa.

Olisiko mahdollista kehittää joitain apufunktioita, joilla elementtien sijoittelu lomakkeelle sujuisi vähemmillä koodiriveillä, kuin suoralla GridBagLayout:in ja GridBagConstraints:in käytöllä?

Vihje: JTextField:it menevät GridBagLayout:lla suoraviivaisesti asetettuina hyvin kapeiksi. JTextField:in saa muutettua normaalikokoiseksi antamalla sille käskyn:

    jtf.setMinimumSize(jtf.getPreferredSize());

Toiminnallisuus

Vaihe 1: nappien harmaannukset

Alussa vain 'Lisää' ja 'Päivitä' -napit ovat mahdollisia (muut napit on harmaannutettu).

Painettaessa 'Lisää' -nappia tyhjennetään kaikkien kenttien arvot, harmaannutetaan 'Lisää' ja 'Päivitä' ja asetetaan 'Talleta' ja 'Peru' mahdolliseksi.

Painettaessa 'Päivitä' -nappia harmaannutetaan 'Lisää' ja asetetaan 'Talleta', 'Peru' ja 'Poista' mahdollisiksi.

Painettaessa 'Talleta', 'Peru' tai 'Poista' -nappeja harmaannutetaan 'Talleta', 'Peru' ja 'Poista' ja muutetaan 'Lisää' ja 'Päivitä' mahdollisiksi.

Nappien toimintaa voi (kannattaa) kuvata tilakoneella, jossa on tilat 'Selaus', 'Päivitys' ja 'Lisäys'. Eli meillä on tilamuuttuja, jonka arvona voi olla joku yllämainituista. Sekä yksi ainoa metodi, joka on vastuussa nappien tilojen asettamisesta. Nappien koodissa asetetaan tällöin tilamuuttujan arvo oikeaksi ja kutsutaan harmaannutaNappi() -metodia.

Tilakoneen kaavakuva:

      /--------------- lisää -----------> LISÄYS
     /\                                    \/
   SELAUS ----- päivitä -----> PÄIVITYS >---|
     /\                                     |
      \--------- talleta, peru, poista ----/


Vaihe 2: kenttien päivitysmahdollisuudet

Lisäksi oltaessa LISÄYS tai PÄIVITYS -tiloissa käyttäjä voi muuttaa kenttien arvoja (paitsi ei Jäsennro-kenttää eikä tyypin ja luottamustoimen selite-kenttiä). SELAUS -tilassa käyttäjä ei saa muuttaa minkään kentän arvoa.


Vaihe 3: tunnuksen automaattinen asettaminen

Jos jäsenelle ei ole asetettu tunnusta painettaessa 'Talleta' -nappia, niin ohjelma asettaa tunnukseksi 1. etunimen + sukunimen alkukirjaimen.


Vaihe 4: Tyyppi ja luottamustoimi lookupit

Tyyppi- ja luottamustoimi-riveillä ohjelman tehtävänä on täydentää 2. kentän arvo 1. kenttään kirjoitettujen arvon perusteella, joko kentästä poistuttaessa tai omalla napillaan (esim. 'Talleta' tai 'Hae selitteet' -nappi). Ohjelman tulee antaa virheilmoitus jos arvo ei ole mahdollinen eli sille ei ole selitettä; tyhjä arvo (ei tiedossa / ei määritelty ) on sallittu.

Painettaessa Tyyppi- ja luottamustoimi -riveillä kenttien välistä nappia, tulee näyttää käyttäjälle vaihtoehdot, mitä kenttiin voi asettaa.