Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Graafinen käyttöliittymä, osa 2

Samankaltaiset esitykset


Esitys aiheesta: "Graafinen käyttöliittymä, osa 2"— Esityksen transkriptio:

1 Graafinen käyttöliittymä, osa 2
Tapahtumankäsittely, käyttöliittymäkomponentteja Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

2 MVC-malli MVC-malli jakaa sovelluksen malli- ja näkymäkerroksiin.
Ohjain toimii välittävänä komponenttina. Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

3 Tapahtumankäsittely Graafinen ohjelma on tapahtumaohjattu.
Kukin tapahtuma on lähtöisin jostakin tapahtuman lähteestä. Tapahtuma synnyttää aina tapahtumaolion. painikkeelle ActionEvent Tapahtumankuuntelijaluokassa määritetään, mitä tapahtuman syntyessä tehdään. ActionListener-rajapinnan toteutus: metodi actionPerformed Kuuntelijaluokka rekisteröidään komponentin kuuntelijaksi Tapahtuman kuuntelijaluokka toteutetaan usein anonyyminä sisäluokkana, joka kutsuu ohjaimessa olevaa Swing-riippumatonta tapahtuman jatkokäsittelymetodia. Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

4 Painikkeen kuuntelu MVC-mallissa
Luodaan malli-, ohjain- ja näkymäluokat. Näkymäluokkaan kirjoitetaan toiminnallisuus käyttöliittymän rakentamiseksi. Kuhunkin painikkeeseen liitetään anonyymi sisäluokka, joka määritetään ActionEvent-tapahtumien käsittelijäksi. Kirjoitetaan metodi actionPerformed(), jonka sisällä tehdään ne toimenpiteet, joihin painikkeen painamisen on johdettava. Käytännössä kutsutaan ohjaimen jatkokäsittelymetodia. Jatkokäsittelymetodin parametrit eivät sisällä Swing-komponentteja. Kukin tapahtumankuuntelijaluokka (anonyymi sisäluokka) rekisteröidään halutun painikkeen kuuntelijaksi. kutsutaan JButton-painikkeen metodia addActionListener(). Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

5 Esimerkki Kahden painikkeen kuuntelu voidaan toteuttaa kahden anonyymin sisäluokan avulla. Koodiesimerkki PistelaskurinGUI Pistelaskuri PistelaskurinOhjain Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

6 Pistelaskuriesimerkki: malli
Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

7 Pistelaskuriesimerkki: näkymä
Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

8 Pistelaskuriesimerkki: ohjain
Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

9 Tapahtumankuuntelijan muut toteutustavat
Erillisissä luokissa Nimetyissä sisäluokissa Oma sisäluokka kullekin painikkeelle Yhteinen sisäluokka kaikille painikkeille Tapahtuman lähde selvitettävä ns. toimintokomennon avulla. Painikkeeseen liitetään haluttu merkkijono metodilla setActionCommand() Merkkijono saadaan kysyttyä tapahtumaoliolta metodilla getActionCommand() Koodiesimerkit PistelaskurinGUI2 PistelaskurinGUI3 Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

10 Säiliöt Säiliöt ”niputtavat” käyttöliittymäkomponentteja.
Koodiesimerkki IlmoittautuminenGUI Säiliöt ”niputtavat” käyttöliittymäkomponentteja. Säiliöitä voidaan asettaa sisäkkäin. Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

11 Säiliöt JFrame on normaalisti ylimmän tason säiliö.
Muita vaihtoehtoja JApplet, JDialog, JWindow JPanel on perussäiliö alemmilla tasoilla. Komponentteja lisätään add()-metodilla. Muita säiliöitä: JScrollPane JTabbedPane JSPlitPane Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

12 Esimerkki: JScrollPane
Koodiesimerkki JScrollPaneGUI Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

13 Sijoittelijat Sijoittelija määrää, miten komponentit sijoitellaan säiliön sisällä. Tutustutaan kolmeen sijoittelijaan FlowLayout Vasemmalta oikealle, ylhäältä alas GridLayout Ruudukko BorderLayout Keskialue ja neljä reuna-aluetta Oletussijoittelijana on FlowLayout. Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

14 FlowLayout setTitle("FlowLayout");
paneeli = new JPanel(new FlowLayout()); for (int i = 0; i<=5; i++) { paneeli.add(painikkeet[i]); } setTitle("FlowLayout, vasen tasaus"); paneeli = new JPanel(new FlowLayout(FlowLayout.LEFT)) ; for (int i = 0; i<=5; i++) { paneeli.add(painikkeet[i]); } Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

15 GridLayout setTitle("GridLayout");
//… setTitle("GridLayout"); paneeli = new JPanel(new GridLayout(4,3)); for (int i = 0; i<12; i++) { paneeli.add(painikkeet[i]); } Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

16 BorderLayout setTitle("BorderLayout");
paneeli = new JPanel(new BorderLayout()); paneeli.add(painikkeet[0], BorderLayout.NORTH); paneeli.add(painikkeet[1], BorderLayout.SOUTH); paneeli.add(painikkeet[2], BorderLayout.WEST); paneeli.add(painikkeet[3], BorderLayout.EAST); paneeli.add(painikkeet[4], BorderLayout.CENTER); Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

17 Valintapainikkeet ja valintaruudut
Koodiesimerkki ValintakomponentitGUI JRadioButton, JCheckBox Yhteen kuuluvat valintapainikkeet yhdistetään ButtonGroup- olioon. Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen

18 Luettelo- ja yhdistelmäruudut
JList, JComboBox Koodiesimerkki LuetteloruudunGUI Ohjelmoinnin jatko (Java) Metropolia Ammattikorkeakoulu Vesa Ollikainen


Lataa ppt "Graafinen käyttöliittymä, osa 2"

Samankaltaiset esitykset


Iklan oleh Google