/* Java-appletti, jossa lasketaan kahteen tekstikenttään syötettyjen lukujen summa. Esittelee Tekstikentät sekä käyttöliittymäelementtien tapahtumankäsittelyä. Tekijä: Juha Peltomäki. */ import java.awt.*; import java.applet.*; import java.awt.event.*; // tapahtumien käsittelyihin liittyvät kirjastot!!!! // implements ActionListener oltava kaikissa joihinkin toimiin // reagoivissa ohjelmissa public class SummaaTeksti extends Applet implements ActionListener { // Luokan jäsenmuuttujat. Esitellään ja luodaan samalla! Button laske = new Button("Laske"); Button nollaa= new Button("Nollaa"); TextField luku1 = new TextField(10); TextField luku2 = new TextField(10); TextField vastaus = new TextField("Vastaus tulostuu tähän! "); Panel paneeli = new Panel(); // Vastauksen sisältävä merkkijono static final String VMJ = new String("Lukujen summa = "); public void init() { // Asetataan uusi sijoittelymalli (layout) // Sijoittelumallit määrittelevät, miten elementit sijoittavat // itsensä näytölle. Niitä voi myö sekoittaa tai tulostaa // Panel-luokan olioon. // setLayout(new FlowLayout()); // lisäksi mm. GridLayout() setLayout(new BorderLayout()); resize(300,400); // muuttaa applet-ikkunan kokoa // Lisätään molemmille painonapeille tapahtumien kuuntelulaitteet // Nämä tehtävä jokaiselle haluttavalle elementille erikseen!! laske.addActionListener(this); nollaa.addActionListener(this); luku1.addActionListener(this); // Lisätään elementit väliaikaiseen tallennuspaikkaan paneeli.add(luku1); paneeli.add(luku2); paneeli.add(laske); paneeli.add(nollaa); // määritellään sijainti, "North", "South", "West", "East", "Center" add("North", paneeli); // Napit sovelman yläosaan add("South", vastaus); // Tulostuskentät keskelle } /* Täällä käsitellään sovelman erilaiset tapahtumat */ public void actionPerformed(ActionEvent tapahtuma) { String v1, v2; double a = 0, b = 0, lopputulos = 0; // Selvitetään tapahtuman kohdeolio (tässä painike) Object kohde = tapahtuma.getSource(); // tapahtuman nimi otettu selville String nimi = (String) tapahtuma.getActionCommand(); vastaus.setText(""); // Tyhjätään edellinen vastaus // Testataan onko painike (instanceof Button) // Tämän lisäksi testataan, mikä painike on kyseessä!!!! if (kohde instanceof Button) { // Jos kohde on nollaa painike! if (kohde == nollaa) { // tai kohde.equals("Nollaa") //asetetaan syöttökenttiin tyhjät arvot luku1.setText(""); luku2.setText(""); vastaus.setText("Kentät tyhjättiin!"); } // Jos kohteena laske-painike! else if (kohde == laske) { // tai kohde.equals("Laske") // Luetaan vanhat arvot v1 = luku1.getText(); v2 = luku2.getText(); // Muutetan syötetty arvo merkkijonosta reaaliluvuksi try { a = Double.valueOf(v1).doubleValue(); b = Double.valueOf(v2).doubleValue(); } catch (NumberFormatException e) { vastaus.setText("Syötä vain lukuja!"); } // Lasketaan lukujen summa ja sijoitetaan vastauskenttään! lopputulos = a + b; vastaus.setText(VMJ + Double.toString(lopputulos)); } //Else-if päättyyy } // Jokainen tapahtuma näytetään painikepalkissa showStatus(nimi + " " + tapahtuma.toString()); } }