Graafinen käyttöliittymä, osa 1 Idea, MVC-malli ja ensimmäinen ohjelma
Graafinen käyttöliittymä Ensimmäisen kerran tavoitteena on oppia graafisen ohjelman perusidea sekä oppia laatimaan esimerkin mukaan pieni graafinen sovellus.
Graafinen käyttöliittymä Rakennetaan käyttöliittymäkomponenttien avulla painikkeet tekstikentät luetteloruudut säiliöt Graafinen ohjelma on tapahtumaohjattu. Tapahtumia ovat esimerkiksi: käyttöliittymän painikkeiden napsautukset hiiren painikkeiden napsautukset hiiren liikkeet Tapahtumaohjattu ohjelma on kuuntelutilassa Tapahtumankäsittelysäie vastaa tapahtumiin reagoimisesta. Tapahtuman syntyessä suoritus siirtyy tapahtumankuuntelijaluokassa olevaan tapahtumankäsittelymetodiin.
Swing Pakkaus javax.swing tarjoaa käyttöliittymäkirjaston. Kokoelma valmiiksi toteutettuja komponentteja. Perustuu vanhaan AWT-käyttöliittymäkirjastoon. Kirjaston käyttö edellyttää ainakin aluksi jatkuvaa APIdokumentaation käyttöä.
MVC-malli Käyttöliittymä ja sovelluslogiikka kannattaa erottaa toisistaan. Tekee ohjelmasta modulaarisemman. Esimerkiksi käyttöliittymä voidaan vaihtaa toiseksi ilman, että sovelluslogiikkaan tarvitsee koskea. MVC (model-view-controller) on suunnittelumalli, joka tukee edellä mainittua tavoitetta.
MVC-malli M Malli Tilatiedot V Näkymä Päivitys C Ohjain Päivitys Tapahtumat Malli toteuttaa sovelluslogiikan. Näkymä toteuttaa käyttöliittymän. Ohjain ohjaa ja päivittää mallia ja käyttöliittymää Vastaa käyttöliittymätapahtumien jatkokäsittelystä.
MVC ja Java Jokainen luokka kuuluu johonkin kolmesta MVC-mallin osasta. Yksinkertaisimmillaan MVC-mallin mukainen ohjelma koostuu kolmesta luokasta: Luokka sovelluslogiikalle (mallitaso) Luokka graafiselle käyttöliittymälle (näkymätaso) Luokka ohjaimelle (ohjaintaso)
Malli
Näkymä
Ohjain
Ensimmäinen ohjelma Toteutetaan konenoppa MVC-mallin mukaisena graafisena sovelluksena: 1. Malli. 2. Graafinen käyttöliittymä. 3. Ohjain. 4. Tapahtumakäsittely
Luokka Noppa (malli)
Luokka NopanGUI (näkymä)
Luokka NopanOhjain (ohjain)
Suorituksen kulku main()-metodissa luodaan ilmentymä mallista, käyttöliittymästä ja ohjaimesta. Tieto ohjaimesta välitetään mallille (metodi rekisteröiohjain()). Käyttöliittymän rakennus tapahtuu metodissa alustakomponentit(). Rakennus päättyy kutsuun setvisible(true), jolloin käyttöliittymä piirtyy. Tämän jälkeen ei saa seurata muita rakennuskomentoja. Painikkeeseen heittopainike liitettiin anonyyminä sisäluokkana toteutettu tapahtumankuuntelija. Kun painiketta napsautetaan, suoritetaan siinä oleva metodi actionperformed(). Metodi antaa kontrollin ohjaimelle, joka pyytää mallilta silmäluvun ja välittää sen käyttöliittymälle. Painikkeen tapahtumankuuntelija toteuttaa rajapinnan ActionListener, joka määrää kirjoittamaan toteutuksen metodille actionperformed().
Käyttöliittymäluokista Käyttöliittymän pääikkuna periytetään yleensä JFrameluokasta. kutsu setdefaultcloseoperation(exit_on_close); määrää, että suoritus päättyy, kun ikkuna suljetaan. Ikkunan sisältö kootaan JPanel-säiliökomponenttiin. add()-metodi lisää säiliöön komponentin. JFrame-luokan metodikutsu setcontentpane(sisältöpaneeli); vaihtaa ikkunan sisällöksi valmiiksi täytetyn säiliön nimeltä sisältöpaneeli.
Esimerkin ohjelmakoodit Esimerkin ohjelmakoodit ovat Tuubi-työtilan välilehdellä Työtiedostot: Noppa.java NopanOhjain.java NopanGUI.java