© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet: Muistutus: Tarvitset seuraavia komponentteja harjoituksissa: otsikkoteksti.

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

Useimmat esitetyt asiat pätevät myös muihin Office ohjelmiin.
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
Luku 5 – Tietojen hakeminen sovelluksiin
Kuinka tehdään lomake Wordilla
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö Netbeans ja XAMPP Projektin luominen.
Ict1td002: Ohjelmointitaito Kertaus Osio 2 - luokat - ilmentymät - viittaus- ja arvomuuttuja - ilmentymien taulukointi HAAGA-HELIA IltaTiko.
Julkaisukielet ja - tekniikat tMyn1 Julkaisukielet ja -tekniikat •Verkko-ohjelmointi voidaan jakaa kahteen osaan: asiakaspuolen ja palvelinpuolen ohjelmointiin.
Jukka Juslin Poikkeukset ja niiden paikallistaminen * Jukka Juslin * Liittyy oppikirjan lukuun 11.
Johdetun luokan määrittely tMyn1 Johdetun luokan määrittely •Kun johdettu luokka periytetään kantaluokasta, saadaan kantaluokan jäsenet enemmän tai vähemmän.
13. Pakkaukset.
Graafinen käyttöliittymä, osa 2
Osio 4: Graafinen käyttöliittymä
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Poikkeuskäsittely- lohkot tMyn1 Poikkeuskäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw ja.
VB:n tietokantakäsittely
SE-02 Olioperustainen ohjelmistokehitys Tampereen yliopisto, syksy 2000 Roope Raisamo perustuu Kai Koskimiehen Oliokirjaan ja kurssin aiempiin materiaaleihin.
Ohjelman perusrakenteet
13. Hyvä ohjelmointitapa (osa 1)
Virtuaaliset jäsenfunktiot tMyn1 Virtuaaliset jäsenfunktiot Virtuaalinen jäsenfunktio on esiteltävä monimuotoisessa kantaluokassa. Virtuaalisen jäsenfunktion.
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet: Muistutus: Tarvitset seuraavia komponentteja harjoituksissa: otsikkoteksti.
Työasemasovelluksen käyttöliittymä sovelluksien käyttöliittymät voidaan jakaa kahteen pääluokkaan: –kohde-toiminto -pohjaisiin (object-action) käyttöliittymiin.
Kuinka niitä käsitellään
© 2010 IBM Corporation1 Objektien käyttöoikeudet  Kaikilla sisällönhallinnan objekteilla on käyttöoikeudet. Käyttöoikeudet on jaoteltuina Lukuoikeuksiin,
Osio 4: Graafinen käyttöliittymä
© 2010 IBM Corporation1 Sivustoalue  Internet sivu rakentuu sivustoalueista, jotka yleensä on jaoteltuna toiminnoittain osa-alueisiin.  Sivustoalueella.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
17. Kooste Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa “A on B:n osa” tai “A kuuluu B:hen”. − Koostesuhteessa.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Komponenttipohjainen ohjelmistotekniikka (TJTSS56) Osa 4 Kevätlukukausi 2010 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Markku Sakkinen.
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
MultiMaker 7.0 Workshop Ohjelma, jossa voidaan luoda näyttäviä multimediasisältöjä. Yhtä sisältökoko-naisuutta kutsutaan esitykseksi. Ohjelmointitaitoja.
© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Tavoite: Opiskelija tuntee käyttöliittymän suunnittelun perusteita Opiskelija tuntee Javan Swing-tekniikan.
Johdetun luokan olion esittely... tMyn1 Johdetun luokan olion esittely ja määrittely Esittelyluokka tarkoittaa olion tunnuksen luokkaa. Määrittelyluokka.
Vesa Ollikainen & Outi Grotenfelt
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Monimuotoinen luokka tMyn1 Monimuotoinen luokka Monimuotoinen luokka mahdollistaa saman jäsenfunktion toteutuksen monella tavalla. Tällöin puhutaan virtuaalisesta.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
CSS Dreamweaverilla Matti Viitala KaHa/OAMK 2005.
Graafinen käyttöliittymä, osa 1
Ydinpalveluiden (käyttäjä, käyttöoikeus, potilas).NET-palvelutoteutus: CoreServiceDemo PlugIT-loppuseminaari Koulutustyöpaja 1: Avoimet ohjelmistorajapinnat.
Javan oliovirrat eli oliotiedostojen käsittely. Olio- eli objektitiedostojen käsittely Käsittely täysin samanlaista kuin muiden tiedostojen 1.Otetaan.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
Symbian ohjelmointi Ti Symbian ohjelmointi 4. harjoitus Juha Turunen
Grafiikkaa Javalla Ville Sundberg
Yksikkötestaus ● Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin.
17. Kooste.
5. Kapselointi.
11. Rajapinnat.
Poikkeustenkäsittelylohkot try-catch
TERVE Piirto-ohjeita GIMP-kuvankäsittelyohjelmalle
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
14. Hyvä ohjelmointitapa.
13. Pakkaukset.
TERVE Piirto-ohjeita GIMP-kuvankäsittelyohjelmalle
3. Attribuutit.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
Esityksen transkriptio:

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet: Muistutus: Tarvitset seuraavia komponentteja harjoituksissa: otsikkoteksti (label)muuttumattoman tekstin esittäminen muokkausruutu (text field)tekstitiedon esittäminen ja sen muuttaminen käyttäjän toimesta komentopainike (button)sovelluksen toiminnon aktivointi yhdistelmäruutu (combo box) käyttäjä voi valita syöttötiedon alasvetovalikosta tai kirjoittaa sen ruutuun paneeli (panel)näytöllä oleva alue, jossa voidaan esittää muita käyttöliittymäkomponentteja

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet •Swing-tekniikan GUI-komponentteihin liittyy kolme peruskäsitettä: –komponentit (components) –tapahtumat (events) –kuuntelijat (listeners)

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet •Javan tapahtumankäsittely perustuu Observer design pattern –malliin –observer = tarkkailija –design pattern = suunnittelumalli •Suunnittelumalli on toteutustapa, jota voidaan soveltaa uudelleen saman tyyppisen ongelman ratkaisuun

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet •Observer design pattern –tapahtumien lähde-objektissa tapahtuu muutoksia –joukko tarkkailijoita seuraa tapahtuvia muutoksia –lähde-objekti ei vastaa tarkkailijoiden aktivoinnista –lähde-objekti sisältää listan, johon muutoksista kiinnostuneet voivat listautua –listautuneet tarkkailijat voivat kuunnella tapahtuneita muutoksia –tarkkailija liittää haluamansa muutoksen kuuntelijaan tarvittavan toiminnallisuuden

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Lähde-objekti Tapahtuma Kuuntelija Tarkkailija Kuuntelija Tarkkailija … register deregister notify

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet •Tapahtuma (event) on objekti, joka kuvaa jotakin käyttäjän tekemää toimenpidettä –hiirtä siirretään (mouse move) –hiirtä raahataan (mouse drag) –hiiren painiketta painetaan (a mouse button is clicked) –näppäimistöltä näppäillään merkki (a keyboard key is pressed) –ajastimen aika päättyy (a timer expires)

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet •Tapahtumiin liittyy kolme peruskäsitettä (itse asiassa olioita): –Tapahtuma itse (event) –Tapahtuman lähde (event source) –Tapahtuman kuuntelija (event listener)

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet Tapahtuma itse (event) •luodaan Lähde-objektin yhteydessä •on objekti, joka periytetään java.util – paketin EventObject-luokasta •kuvaa tapahtunutta tapahtumaa

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet Tapahtuman kuuntelija (event listener) •on objekti, jonka rajapinta periytetään java.util –paketin EventListener- rajapinnasta •rekisteröityy kuuntelijaksi tapahtuman lähde-objektille

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet Tapahtuman lähde (event source) •ylläpitää listaa tapahtuman kuuntelijoista •listaan rekisteröidytään addListener-metodilla ja siitä poistutaan removeListener-metodilla •lähde luo event-objektin ilmentymän •lähde ilmoittaa kullekin listan kuuntelijalle tapahtumasta notify-metodilla •notify-metodi sisältää parametrinaan viitteen event-objektiin

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet Tapahtumiin voi liittyä eri tyyppisiä kuuntelijoita: Käyttäjä näpäyttää komentopainiketta, painaa Return-näppäintä kirjoittaessaan muokkausruutuun tai valitsee menu-valikosta toiminnon ActionListener Käyttäjä sulkee ikkunanWindowListener Käyttäjä näpäyttää hiirtä komponentin päälläMouseListener Käyttäjä siirtää kohdistimen komponentin päälleMouseMotionListener Komponentti tulee näkyväksiComponentListener Komponentti saa fokuksenFocusListener Taulun tai listan valinnan muuttuminenListSelectionListener

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet Käyttäjän toimenpide Komponentti Event Komentopainikkeen painaminen JButton ActionEvent Tekstin muuttaminen JTextComponent TextEvent Lista-alkion kaksoisnäpäytys JList ActionEvent Alkion valinta näpäyttämällä kerran JList ItemEvent Alkion valinta tai valinnan poisto JComboBox ItemEvent

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Laukaisee tapahtuman (event) Kohdekomponentti Kuuntelija Listener Event-objekti Tapahtumankäsittelijä Aktivoi

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä •Kuuntelija voidaan toteuttaa tähän tapaan: tallennaJButton = new JButton ("Tallenna"); tallennaListener = new tallennaListenerClass(); tallennaJButton.addActionListener(tallennaListener); class tallennaListenerClass implements ActionListener { public void actionPerformed (ActionEvent e) { // tähän tulee toiminnallisuus } );

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä •Kuuntelija voidaan toteuttaa anonyymina sisäluokkana (anonymous inner class) tähän tapaan: tallennaJButton = new JButton ("Tallenna"); tallennaJButton.addActionListener( new ActionListener () { public void actionPerformed ( ActionEvent event) { // tähän tulee toiminnallisuus } );

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä •Mikä olikaan anonyymi sisäluokka? –erikoistapaus luokan määrittelystä –luokka määritellään ilman nimeä (tästä sana anonymous) –luokan määrittely esiintyy tyypillisesti metodin sisällä (tästä sana inner) –koska luokalla ei ole nimeä, on yksi objekti luotava välittömästi määrittelyn yhteydessä –seuraus: kullakin kontrollilla on oma kuuntelija

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Vaihtoehtoinen tapa: public class ButtonDemo extends JFrame implements ActionListener { … public ButtonDemo () { …. JButton tallennaJButton = new JButton (”Tallenna”); tallennaJButton.addActionListener(this); … JButton poistaJButton = new JButton (”Poista”); poistaJButton.addActionListener(this); … } public void actionPerformed (ActionEvent e) { if (e.getActionCommand().equals(”Tallenna”)) // tallennatoiminta ; else if (e.getActionCommand().equals(”Poista”)) // poistatoiminta ; else //virhetoiminta ; }

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Erona anonyymiin sisäluokkaan: •nyt painikkeilla on yhteinen kuuntelija •molemmat painikkeet aktivoivat saman kuuntelijan •tapahtumaobjektista selviää, kumpi painike on kuuntelijan aktivoinut •sen mukaan valitaan toiminta •huomaa, että kontrollista ja käyttäjän toimenpiteestä riippuu tapahtuma, joka aktivoituu

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Kumpaa kuuntelijatyyppiä kannattaa käyttää? •Tässä tapauksessa tavoitteena on yhdistää usean eri tekijän osakokonaisuuksien toiminnallisuus samaan ikkunaan •Silloin on parempi käyttää anonyymiä sisäluokkaa, jolloin jokaisella kontrollilla on oma kuuntelija •Yhdistäminen on helppoa mutta ikkunan koodi pitenee •Yleisessä tilanteessa vertailu ei ole näin helppo

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Toiminnallisen eheyden käsite •esimerkissämme sama toiminto voidaan aktivoida sekä valikkoriviltä että komentopainikkeesta •kummallakin kontrollilla on oma kuuntelija •kuuntelijoiden tulee aktivoida sama toiminta (toteutettuna esim. luokan sisäisenä metodina) ilman ylimääräisiä toimenpiteitä •metodissa toteutetaan se toiminnallisuus, joka toimintoon halutaan liittää •seuraus: kumpikin toiminnon aktivointitapa johtaa täsmälleen samaan suoritukseen •seuraus: käyttäjän oppimista tuetaan

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet Miten viikon 4 ryhmäharjoitustehtävä kannattaa toteuttaa: •Otetaan lähtökohdaksi edellisellä viikolla toteutettu osasovellus •Lisätään sovellukseen kuuntelijat anonyymina sisäluokkana •Toteutetaan jokaiseen kuuntelijaan sanomaikkuna, joka kertoo aktivoidun komennon nimen •Testataan osasovellus •Kootaan testatuista osasovelluksista toimiva ikkuna •Lisätään ikkunaan kutakin toimintoa vastaava metodi •Aktivoidaan ko. metodi sekä valikkorivin toiminnosta että komentopainikkeen toiminnosta •Testataan toteutus

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet Miten viikon 4 ryhmäharjoitustehtävä voi laajentaa •Etsitään arkistoista tosite-luokan toteutus •Liitetään tosite-luokan toteutus sovellukseen niin, että uuden tositteen tiedot saadaan ikkunasta Tallenna-toiminnon painamisen jälkeen •Talletetaan ikkunan tiedot tosite-luokkaan sen metodien avulla •Tarkistetaan tietojen kelvollisuus. Tähän olisi hyvä olla metodi tosite- luokassa •Jos tiedot kelpaavat, tuodaan siitä viesti käyttäjälle •Testataan toteutus •Toteutuksen onnistuessa saadaan hyvä arvosana

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Keskusteluikkunan (Dialog window) toteuttaminen •Keskusteluikkuna voidaan toteuttaa kahdella vaihtoehtoisella tavalla –käytetään JDialog-luokkaa, jolloin dialogi-ikkuna kiinnitetään vastaavaan JFrame-ikkunaan –käytetään JFrame-luokkaa, jolloin toteuttajan on muunnettava ikkunan käyttöliittymä otsikkorivin komentopainikkeiden osalta (ei suositeltavaa)

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä JDialog-luokka •muodostin vaatii sen ikkunan kahvan, johon dialogi-ikkuna liittyy •tuhoamalla ikkuna tuhoutuu myös siitä riippuva dialogi-ikkuna •dialogi-ikkuna modaalisuus voidaan valita –modaalinen – dialogi-ikkuna on pakko käsitellä ennen muita ikkunoita –modaaliton –muiden ikkunoiden samanaikainen käsittely onnistuu (harvinaisempi tapaus) •Swingissä on valmiita dialogi-ikkunoita: –JFileChooser –JColorChooser –jne.

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä •Dialogin toteuttaminen JFrame-luokan avulla –asiakirjaikkuna kutsuu dialogi-ikkunaa –kutsun yhteydessä päätetään myös modaalisuudesta (sopimuskysymys) –dialogi-ikkunan riippuvuus asiakirjaikkunaan syntyy vasta kutsuhetkellä –dialogi-ikkuna voidaan liittää useampaankin asiakirjaikkunaan

© Markku Kuitunen Osio 4: Graafinen käyttöliittymä Työn iloa!