Swing-käyttöliittymät


Harjoitus 1

Kirjoita ohjelma SwingHeippa. SwingHeipan ajamisen tulee luoda ikkuna, jonka keskellä on teksti "Heippa!". Tee luokka seuraavissa vaiheissa:

  1. Määritä luokka siten, että SwingHeippa perii luokalta javax.swing.JFrame. Kirjoita tarvittava import-lause. Miten periytyminen saadaan aikaiseksi?

  2. Kirjoita luokkaan luontimetodi, joka ei ota yhtään argumenttia.

    1. Tee luontimetodissa uusi instanssi luokasta javax.swing.JLabel. Lisää tarvittava import-lause tiedoston alkuun. Jlabel:n luontimetodi ottaa argumenttina merkkijonon. Käytä merkkijonoa "Heippa!".

    2. Lisää edellisessä kohdassa luotu tekstiolio SwingHeippa-kehyksen alikomponentiksi. Lisääminen ei tapahdu suoraan SwingHeippa-kehykseen vaan sen sisältämään sisältöpaneeliin, joka saadaan poimittua metodilla getContentPane(). Lisääminen tehdään sisältöpaneelin add-metodilla, jolle annetaan argumenttina luotu tekstiolio.

    3. Lisää SwingHeippa-kehykseen ikkunatapahtumien kuuntelija (WindowListener). Sen tehtävänä on reagoida käyttäjän ikkunaan kohditamia toimintoja, ja erityisesti lopettaa ohjelman suoritus, mikäli ikkuna suljetaan. Ilman tätä kuuntelijaa ohjelma jää toimimaan ikkunan sulkemisen jälkeenkin.

      Ikkunakuuntelija luodaan luokasta java.awt.event.WindowAdapter. Sille määritellään luomisen yhteydessä uudestaan yksi metodi, jonka pää on public void windowClosing(WindowEvent e). Metodin rungossa ohjelman suoritus lopetetaan komennolla System.exit(0). Selvitä API:sta (Javan luokkakirjaston dokumentaatiosta), mitä tämä komento tekee ja mitä argumentti 0 tarkoittaa.

      Lisää tiedoston alkuun import-lauseet ikkunadapteriluokalle java.awt.event.WindowAdapter sekä ikkunatapahtumaluokalle java.awt.event.WindowEvent.

      Ikkunakuuntelija lisätään kehykseen (this) metodilla addWindowListener, jolle annetaan argumentiksi uusi ikkunankuuntelija.

    4. Huolehdi lisäksi siitä, että komponentit pakataan ja tehdään näkyviksi. Eli lisää luontimetodin loppun komennot pack() ja show().

  3. Kirjoita lopuksi luokkaan SwingHeippa pääohjelmametodi (main), joka luo yhden instanssin luokasta SwingHeippa.

  4. Käännä ohjelma, korjaa virheet ja aja. Ikkuna ilmestyy pienikokoisena ruudun vasempaan yläkulmaan. Suurenna sitä vetämällä sen oikeasta alakulmasta.

  5. Muuta kohtaa, jossa tekstiolio (JLabel) luodaan. Anna luontimetodille toiseksi argumentiksi vakio JLabel.CENTER.

  6. Käännä ja aja ohjelma. Suurenna ikkunaa. Mikä on ero aikaisempaan?


Harjoitus 2

Kirjoita ohjelma, jonka ajaminen luo ikkunan, jossa on kaksi komponenttia:

Kun painiketta painetaan, tekstiolion teksti "Kyllä" muuttuu tekstiksi "Ei" tai mikäli tekstioliossa lukee "Ei" se vaihtuu tekstiksi "Kyllä".

Toimi seuraavasti:

  1. Kirjoita tämä ohjelma luokkana, jonka nimi on Vaihto. Tee siitä luokan JFrame aliluokka. Määritä luokalle ominaisuusmuuttujat JLabel teksti ja JButton.

  2. Määritä luokalle myös luontimetodi, jossa luot ikkunakuuntelijan, tekstiolion ja painikkeen samaan tapaan kuin edellisessä harjoituksessa.

  3. Lisää tekstiolio kehyksen sisältöpaneeliin (jonka saat siis selville metodilla getContentPane(). Sisältöpaneelissa on oletusarvoisesti asetteluperiaatteena BorderLayout. Kun lisäät tekstiolion ja painikkeen sisältöpaneeliin, voit antaa add-metodille ylimääräisen argumentin, joka määrittää komponentin paikan. Anna tekstiolion paikaksi BorderLayout.CENTER ja painikkeen paikaksi BorderLayout.SOUTH. (Tarvitseeko sinun importoida jokin luokka?)

  4. Lisää painikkeeseen toiminnonkuuntelija. Luo ensin kuuntelija rajapintaluokasta ActionListener ja määritä sille luomisen yhteydessä metodi public void actionPerformed(ActionEvent e). Lisää tarvittavat import-lauseet. Määritä metodin runko siten, että se muuttaa tekstiolion (joka löytyy siis ominaisuusmuuttujasta teksti) tekstin merkkijonoksi "Kyllä" tai "Ei". Voit käyttää tekstiolion metodia setText. Katso API:sta kuinka metodi toimii. Miten saat selville tekstiolion aikaisemman tilan?

  5. Lisää pääohjelmametodi, joka luo yhden instanssin luokasta Vaihto.

  6. Käännä ohjelma ja aja se. Kokeile painikkeen toimintaa.


Harjoitus 3

Kirjoita ohjelma, jonka ajaminen luo ikkunan, jossa on kolme komponenttia:

Kun painiketta painetaan, tekstioliossa oleva kuva vaihtuu. Luokassa täytyy siis olla lista kuvatiedostojen nimistä. Tekstiolion kuvan voit vaihtaa metodilla setIcon. Selvitä API:sta kuinka se toimii.

Suunnittele ohjelma itse. Ohjelman yleinen rakenne on samantapainen kuin edellisissä harjoituksissa. Huomaa kuitenkin seuraavat seikat:


Last modified: Tue Apr 23 10:07:06 FLE Daylight Time 2002