Javan GUI Scratchaajalle

Samankaltaiset tiedostot
Javan GUI Scratchaajalle

Javan GUI Scratchaajalle

Javan GUI Scratchaajalle

Javan GUI Scratchaajalle

JAVA-OHJELMOINTI 3 op A274615

kasviin, joka tuottaa hedelmää

Olio-ohjelmointi Käyttöliittymä

Ohjelmoinnin jatkokurssi, kurssikoe

Javan GUI Scratchaajalle

JAVA-OHJELMOINTI 3 op A274615

Jypelin käyttöohjeet» Ruutukentän luominen

Luokan sisällä on lista

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Eclipse & WindowBuilder

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Javan GUI Scratchaajalle

Rajapinta (interface)

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Ohjelmoinnin perusteet, kurssikoe

9. Periytyminen Javassa 9.1

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Osio 4: Graafinen käyttöliittymä

Taulukot. Jukka Harju, Jukka Juslin

GRAAFISEN KÄYTTÖLIITTYMÄN OHJELMOINTI JAVA SWING

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Sisältö. 2. Taulukot. Yleistä. Yleistä

Java layoutit. Juha Järvensivu 2007

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Testivetoinen ohjelmistokehitys

Osio 4: Graafinen käyttöliittymä

15. Ohjelmoinnin tekniikkaa 15.1

Java ja grafiikka. Ville Sundberg

Rämpytysralli. Pelikehys sisältää GameObject luokan, Scene luokan, SceneManager luokan, InputListener luokan, StaticImage luokan

Ohjelmointi 2 / 2010 Välikoe / 26.3

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

1 Tehtävän kuvaus ja analysointi

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sukelluskeräily. Pelihahmon liikuttaminen. Aarre ja pisteet

Java kahdessa tunnissa. Jyry Suvilehto

9. Periytyminen Javassa 9.1

Listarakenne (ArrayList-luokka)

Graafinen käyttöliittymä, osa 2

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Osio 4: Graafinen käyttöliittymä

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Java UI-komponentit (JTable) Juha Järvensivu 2007

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

AUTOCAD-TULOSTUSOHJE. Tällä ohjeella selitetään Autocadin mittakaavatulostuksen perusasiat (mallin mittayksikkönä millimetrit)

OKLV120 Demo 7. Marika Peltonen

Olio-ohjelmointi Javalla

Java-kielen perusteet

Jypelin käyttöohjeet» Miten saan peliin pistelaskurin?

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

JUnit ja EasyMock (TilaustenKäsittely)

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Jypelin käyttöohjeet» Ruutukentän luominen

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

1. Taustatietoa näppäimistönkuuntelusta

Javan perusteita. Janne Käki

KOKO PERHEEN HAUSKA STRATEGIAPELI OHJEET

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

18. Abstraktit tietotyypit 18.1

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Helsingin yliopiston LUMA-keskus

Opinnäytteen nimi ja mahdollinen alaotsikko (tämä pohja toimii parhaiten Word2010-versiolla)

4. Luokan testaus ja käyttö olion kautta 4.1

Mikä yhteyssuhde on?

Ohjelmointi 1 Taulukot ja merkkijonot

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

1. Miten tehdään peliin toinen maila?

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Java-kielen perusteita

Eclipse ja JUnit-ohjelmoijatestit

5. HelloWorld-ohjelma 5.1

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Ohjelmoinnin perusteet Y Python

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Oliot viestivät metodeja kutsuen

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

20. Javan omat luokat 20.1

Fixcom Webmail ohje. Allekirjoitus. Voit lisätä yhden tai useamman allekirjoituksen.

15. Ohjelmoinnin tekniikkaa 15.1

Transkriptio:

Javan GUI Scratchaajalle Asettelu Tähän mennessä olemme luoneet ikkunan, johon voi laittaa yhden komponentin, kuten nappulan. Yksi komponentti harvoin riittää. Useampaa komponenttia lisäillessä meidän tarvitsee kertoa ikkunalle tarkasti mihin mikäkin komponentti pitää lisätä ja tähän tarvitsemme asettelua. Asettelu eli layout on kuin ikkunan pohjapiirrustus. Java tarjoaa valmiina useita erilaisia asetteluja, jotka osaavat muuntaa ohjelmoijan antaman yksinkertaisen sijaintiselityksen JFrame-ikkunan ymmärtämäksi selvitykseksi siitä missä komponentin tulee olla ja miten sen kokoon ja paikkaan vaikuttavat muut komponentit. Kuten ikkuna, nappulat ja kuuntelijat, myös asettelut ovat olioita. Erilaisia asetteluja: BorderLayout = reunusasettelu GridLayout = ruudukkoasettelu FlowLayout = virtaava asettelu Automaattiasettelu Jokaisella JFrame -ikkunalla on automaattisesti BorderLayout -asettelu, kun se luodaan. Jos siihen lisätään komponentteja ilman osoitetta, menevät ne automaattisesti CENTER -alueelle. Tämän takia, jos aiemmin kokeilit lisätä useamman nappulan ikkunaan, menivät ne kukin vuorollaan ikkunan keskelle ja uusi komponentti korvasi aina aiemman lisätyn. JFrame:n add -metodi osaa ottaa vastaan myös osoitteen: JFrame ikkuna = new JFrame(); ikkuna.add( new JButton( Länsi/West ), BorderLayout.WEST ); BorderLayout osoitteita ovat: NORTH (ylälaita), WEST (vasen laita), CENTER (keskus), EAST (oikea laita) ja SOUTH (alalaita). Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 1 / 8

Tehtävä: Puutarha_1 Luo uusi java-projekti. Nimi voi olla vaikka Puutarhapeli. Anna Netbeansin luoda Main Class sen nimisenä kuin se ehdottaa. Puutarhapelissä pelaaja voi kasvattaa ohjelmoijan luomia kasveja. Pelissä on kultaa, jota pelaaja tarvitsee uusien siemenien ostamiseen ja jota pelaaja saa valmiiden kasvisten ym. myynnistä. Puutarha tullaan istuttamaan ristikkomuodostelmaan: Tehtävä: Puutarha_2 Tee projektista automaattiajettava eli luo uusi luokka, joka on nimeltään esim. Puutarhanakyma. Tee siitä Runnable ja kirjoita sille toistaiseksi tyhjä run -metodi. public class Puutarhanakyma implements Runnable { //tässä välissä voi lukea Netbeansin valmiiksi luomaa tekstiä, älä poista @Override public void run() { Jos teit run-metodin automaattisesti ja tähän tuli throw new -rivi, poista se. Anna Puutarhapeli-luokan main-metodissa komento käynnistää graafinen ohjelma: SwingUtilities.invokeLater( new Puutarhanakyma() ); Tehtävä: Puutarha_3 Määrittele Puutarhanakyma-luokalle yksityinen (=private) JFrame -muuttuja, jotta mikä tahansa luokan sisäinen metodi, eli komento, voi antaa komentoja JFrame -ikkunalle. public class Puutarhanakyma implements Runnable { private JFrame ikkuna; Aseta run -metodissa ikkunalle arvoksi new JFrame();. Arvon asetus hoituu = -merkin avulla. Määritä ikkunalle otsikko, koko, sulkumekanismi ja näkyvyys. Testaa, että ikkuna aukeaa, kun projekti ajetaan. Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 2 / 8

Tehtävä: Puutarha_4 Luodaan ensin pelille ohjeet ja ympäristö ikkunan reunoille. Tee tätä tarkoitusta varten luokkaan uusi metodi: private void rakennanakyma() { 1) Kirjoita rakennanakyma -metodiin { -sulkujen väliin: - komennot luoda vieressä näkyvän ikkunan kaltaiset nappulat ja etiketit - komennot ikkunalle lisätä edelliset komponentit näkyviin Vinkkejä - Käytä komponentteja lisätessäsi BorderLayout -osoitteita. CENTER-osa on varattu myöhemmin lisättäville istutuksille - Voit tehdä tekstit etiketteihin tai nappuloihin oman mieltymyksesi mukaan: - new JLabel( etiketti ) - new JButton( nappula ) 2) Kirjoita rakennaikkuna(); metodikutsu run -metodin loppuun, kun JFrame -ikkuna on jo luotu ja määritelty. Perintä Ikkunan keskelle olisi tarkoitus luoda istutuksia. Osa istutuksista voi olla tyhjiä, osassa voi olla kasvava kasvi ja toisissa valmis, myytävissä oleva tuote. Istutuksiin liittyy niin paljon sääntöjä, ettei niitä kannata antaa jokaiselle istutukselle erikseen. Istutuksesta kannattaa siis tehdä luokka, jota voimme sitten kloonata useammaksi olioksi. Istutuksia pitäisi myös pystyä klikkaamaan, jotta niiden kasveja voisi hoitaa. Tähän soveltuisi JButton -nappula, mutta sillä ei toisaalta ole istutuksien muita ominaisuuksia. + = IstutusNappula Ongelman ratkaisee perintä. Javassa voimme tehdä istutusnappulan, joka perii JButton - nappulalta kaikki sen ominaisuudet, mutta jolle voimme myös kirjoittaa uusia sääntöjä. Javassa luokka voi periä toisen luokan extends -komennolla: public class Kissa extends JFrame { Extend tarkoittaa sanatarkasti laajentamista. Perittyjen ominaisuuksien lisäksi luokalla on nyt perittyyn luokkaan nähden lisää toimintoja, joten sen toimintaa on laajennettu. Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 3 / 8

! Versio 1.1 Javan GUI Scratchaajalle 3 - Asettelu Tehtävä: Puutarha_5 Luo Puutarhapeli -projektiin uusi luokka nimeltään Istutus. Kirjoita Istutus -luokan määritelmään (eli public class -riville), että se laajentaa (extends) JButton -luokan toimintaa. Perivien luokkien alustaminen Materiaalissa äsken kirjoitettiin, että kissa perii kaikki JFrame -ikkunan ominaisuudet. Tämän jälkeen voisimme aivan hyvin luoda ikkunan aina tekemällä kissan: public void run() { Kissa aatuikkuna = new Kissa(); aatuikkuna.settitle( Olen kissa nimeltä Aatu. ); Tämä ei kenties ole aivan tarkoituksen mukaista. Kun kissa perii JFramen idea on, että uusi luokka on jotenkin erilainen ja parempi kuin peritty luokka. Jo Kissa -luokan luomiskomento voi tehdä ikkunasta kissamaisen. Kissan luomiskomento, eli konstruktori, määritettiin Kissa -luokan alussa: public class Kissa extends JFrame { //konstruktori on tämä tässä alla public Kissa() { this.settitle( Olen kissa nimeltä Aatu. ); this.setdefaultcloseoperation(jframe.do_nothing_on_close); Tehtävä: Puutarha_6 Istutus on tällä hetkellä vain JButton ilman istutusmaisia ominaisuuksia. Kun se luodaan sillä pitäisi olla vähintään istutuksen ulkonäkö. Luo pieniä* kuvia: - tyhjän multakeon kuva - kuvia yhden kasvin eri vaiheista (multakeko on taustana) *) holly -kuva on jo kohtuu iso Huom! Tee kuvista samankokoiset. Tee alkuperäisestä multakeosta siis kopioita ja piirrä niiden päälle eri vaiheet. Tällöin kasvi ei kasvaessaan näytä pomppivan ruudulla. Tallenna kuvat projektin kansioon (esim. NetBeansProjects > Puutarhapeli). Emme saa kuvia ihan vielä näkyviin, mutta luo istutukselle private kasvuvaihe-muuttuja ja konstruktori, jossa vaihe asetetaan nollaan: private int kasvuvaihe; public Istutus() { this.kasvuvaihe = 0; Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 4 / 8

Listat Pelissä luomme seuraavaksi useita kuvia nappulalle. Kuvien käsitteleminen yksitellen olisi hankalaa, joten luodaan niistä lista. Scratchissa listat tehtiin kuten muuttujatkin, mutta Javassa ne ovat olioita. Helpoin lista käyttää on ArrayList. Sen pituus kasvaa automaattisesti kun uusia listaalkioita lisätään. ArrayList tehdään pitkälti kuten muutkin oliot, mutta sille määritellään myös minkä tyyppisiä alkioita siihen talletetaan. Vertaa: Ikkunan luonti: JFrame ikkuna = new JFrame(); Listan luonti: ArrayList<String> lista = new ArrayList<String>(); Jos haluaisimme tehdä listan numeroita, pitäisi String tekstin tilalle kirjoittaa Integer (int ei riitä). Toisaalta listaan voisi tallettaa myös Kissa-, JButton- ja JFrame-olioita. Tai miksei myös listoja. Tehtävä: Puutarha_7 Tee Istutus -luokalle private muuttuja, joka on ArrayList. Tämän listan sisään laitetaan kohta ImageIcon -olioita, joten määrittele se < > sulkujen väliin. Listan nimi voi olla vaikkapa kuvat. Huom! Tällaiset luokkakohtaiset muuttujat määritellään siististi ohjelmoitaessa luokan alussa yhdessä paikassa. Laita tämä rivi siis jo kirjoitetun private int kasvuvaihe -rivin alle. Lista-alkioiden lisäys Tyhjä lista ei meitä auta. Onneksi listalle voi antaa komennon ottaa vastaan sille sopivia oliota. Tämä komento on add (eli lisää). ArrayList<JButton> nappulat = new ArrayList<JButton>(); nappulat.add(new JButton( Pää )); nappulat.add(new JButton( Tassut )); nappulat.add(new JButton( Häntä )); Lista-alkioiden tiedustelu Aiemmin, jos meillä oli nappula, pystyimme liittämään sen komentoihin, kun tiesimme sen nimen: JButton kaninappula = new JButton( Olen kani ); System.out.println( kaninappula ); Nyt nappulat ovat listassa, joten meidän tulee komentaa listaa antamaan jossain tietyssä kohdassa oleva alkio. Voimme liittää sen suoraan komentoihin: ArrayList<JButton> kerhot = new ArrayList<JButton>(); kerhot.add(new JButton( Scratch-kerho )); kerhot.add(new JButton( Java-kerho )); kerhot.add(new JButton( Algoritmikerho )); System.out.println( kerhot.get(0) ); kerhot.get(0).addactionlistener( new NappulaKuuntelija() ); Bonus: Huomasit kenties, ettei nappuloita ensin tehty omalla JButton kerhonappula = new JButton( Java-kerho ); -rivillä. Tämä on välttämätöntä silloin kun haluamme talteen myöhempiä komentoja varten muuttujan nimen, eli nyt kerhonappula. Aina nimeä ei tarvitse muistaa, jos esim. listan nimen kautta oikean nappulan saa helposti komennettavaksi. Tällöin voi yksinkertaisesti luoda uuden olion: new JButton( Java-kerho ); Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 5 / 8

Tehtävä: Puutarha_8 Luo luokan konstruktorissa (construct = rakentaa), eli public Istutus() -rivin jälkeisten { - sulkujen sisässä, ImageIcon jokaiselle tekemällesi kuvalle. Lisää tehdyt ImageIcon -oliot edellisessä tehtävässä tekemääsi listaan kasvujärjestyksessä. ImageIcon luotiin komennolla: ImageIcon kuva = new ImageIcon( Nimi.png ); Halutessasi voit lisätä ImageIcon -oliot jo suoraan tehtäessä listaan. Huom. Kuvat piti tallentaa NetBeansProjects -kansioon tämän projektin kansioon, jotta peli löytää ne. Huomaa myös, että Scratchia käyttäessäsi tallenna asuste, älä hahmoa. Tehtävä: Puutarha_9 Aseta konstruktorissa listan luomisen jälkeen nappulan kuvaksi listan ensimmäinen ImageIcon. Kuvan saat käytettäväksi get -komennolla. Kuva asetettiin komennolla seticon(kuva). Komennon eteen ei ole välttämätöntä tällä kertaa laittaa komennettavaa hahmoa (kuten nappula.settext( Uusi teksti ); ), koska annamme komennon suoraan luokalle, johon kirjoitamme komennon. Jos komennettavan hahmon haluaa mainita niin se on this, eli kirjaimellisesti tämä. Tehtävä: Puutarha_10 Nyt kun istutuksella pitäisi olla kuva, sitä olisi myös kiva kokeilla. Laitetaan aluksi pellolle vain yksi istutus. 3. Tee Puutarhanakyma -luokkaan myös uusi private void kynnakasvimaa() -metodi ja kutsu sitä, eli kirjoita komennon nimi ja sulut, run -metodissa rakennaikkuna() - komentokutsun perään. 4. Tee kynnakasvimaa -metodin sisällä uusi (=new) Istutus -olio ja lisää se luotuun ikkunaan keskelle. Testaa, että kuva näkyy. Tehtävä: Puutarha_11 Korjataan nyt kynnakasvimaa -metodia niin, että siinä luodaan yhden istutuksen sijaan kaikki halutut. Koska istutuksia tulee kuitenkin paljon, on kannattavaa käyttää jälleen listoja! 1. Tee Puutarhanakyma -luokkaan luokkakohtainen private muuttuja, joka on ArrayList. Tähän listaan laitetaan Istutus -olioita, joten määritä se < > -sulkujen väliin. Muuttujan nimi voi olla vaikka istutukset. 2. Tee kynnakasvimaa -metodiin viereisen kaltainen ohjelma. Listaan lisäyksen jälkeen lisää istutus myös ikkunaan keskelle. Kasvimaa ei näytä vieläkään enempää kuin yhden istutuksen. Korjataan se seuraavaksi. Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 6 / 8

Asettelun määrittely Luotujen ikkunoiden automaattinen asettelu on BorderLayout. Ikkunoille voi kuitenkin antaa myös komennon asetella komponenttinsa erilailla. Tähän käytetään setlayout -komentoa: JFrame ikkuna = new JFrame(); //ohjelmoi tähän väliin ikkunan määritys int rivit = 3; int sarakkeet = 4; ikkuna.setlayout( new GridLayout(rivit,sarakkeet) ); Asetteluksi voi laittaa myös muita: ikkuna.setlayout( new BorderLayout() ); ikkuna.setlayout( new FlowLayout() ); ikkuna.setlayout( new BoxLayout(ikkuna, BoxLayout.X_AXIS) ); Kukin asettelu voi tarvita, tai olla tarvitsematta, taustatietoa. GridLayout tarvitsi rivien ja sarakkeiden määrän, BoxLayout ikkunan, jossa se on ja laatikoiden asettelusuunnan. Ikkunan eri alueiden asettelu Ikkuna ei ole ainoa alue, jolla voi olla asettelu. Ikkunaan voi lisätä myös ikkunapaneeleita, joilla voi olla oma asettelu. JFrame ikkuna = new JFrame(); //ohjelmoi tähän väliin ikkunan määritys JPanel paneeli = new JPanel(); paneli.setlayout( new GridLayout(1,4) ); Koska paneeli on käytännössä uusi, pienempi ikkuna, voi se jälleen sisältää lisää komponentteja. Ne lisätään add -komennolla. Ajatusharjoitus: Voit käytännössä ajatella, että JFrame ja JPanel ovat laatikoita siinä missä JButton, JLabel ja JTextField ovat tavaroita. Tavaroita voi laittaa laatikoiden sisälle. Toisaalta myös laatikot ovat tavaroita, joten laatikoita voi laittaa laatikoiden sisälle. Kullekin laatikolle voi Java-maailmassa määritellä oman asettelunsa. Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 7 / 8

Tehtävä: Puutarha_12 Luo kynnakasvimaa -metodissa ennen for-silmukoita uusi JPanel ja aseta (set) sille asetteluksi uusi GridLayout. Voit asettaa rivejä esim. 3 kpl ja sarakkeita 4 kpl. Paneelin nimi voi olla vaikka kasvimaa. For-silmukoiden sisällä korjaa ohjelmaa niin, että istutukset lisätään kasvimaalle, ei ikkunaan. kynnakasvimaa -metodin lopussa lisää kasvimaa-jpanel ikkunaan sen keskelle (CENTER). Ikkunan ulkonäöstä Nappulat JButton näyttää tyypillisesti nappulalta. Sille voi kuitenkin antaa sen ulkonäköön liittyviä komentoja. setopaque(true) setborderpainted(false) setcontentareafilled(false) setfocuspainted(true) aseta läpinäkymättömäksi (totta) aseta reuna piirretyksi (epätotta) aseta sisusalue väritetyksi (epätotta) aseta fokus piirretyksi (totta) Värit Javassa värit osaa parhaiten Color. Sen voi lainata projektiinsa, kun luokan alkuun kirjoittaa import java.awt.color; Siltä voi pyytää valmisvärejä kuten Color.WHITE ja Color.BLUE. (Löydät lisää googlettamalla color java api.) Uusia värejä voi myös tehdä kun antaa vain haluamansa värin punaisen, vihreän ja sinisen määrät: Color vari = new Color(30, 190, 80); Tehtävä: Puutarha_13 Määritä ikkunasi koko uudelleen, jotta kasvimaa sopii sille. Määritä myös istutusten ulkonäköä ja kasvimaan taustaa. Kasvimaalle voit antaa taustavärin komennolla kasvimaa.setbackground(color.green) tai Color.GREEN kohtaan voi myös kirjoittaa uuden värin: new Color( ) Jotta kasvimaan taustaväri näkyisi nappuloiden alta, karsitaan nappuloiden piirrosta pari osaa. Karsimiskomennot voisi antaa kullekin nappulalle erikseen kynnakasvimaa - metodissa, mutta koska tämä on enemmän istutuksen perusominaisuus, on parempi kirjoittaa komennot suoraan sen konstruktoriin. Anna siis Istutus-luokan konstruktorissa sille (this) aiempia läpinäkyvyyteen, reunoihin ja sisukseen liittyviä komentoja. Minkä ominaisuuksien haluat olevan päällä (true) ja minkä poissa päältä (false)? Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 8 / 8