import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.undo.*; import java.util.*; import java.io.*; public class SummaLaskuri extends JFrame { private JTextField teksti1 = new JTextField(); private JTextField teksti2 = new JTextField(); private JLabel vastaus = new JLabel("Tähän tulee vastaus"); public SummaLaskuri() { JPanel paneeli = new JPanel(); Box laatikko = Box.createVerticalBox(); laatikko.add(teksti1); laatikko.add(Box.createVerticalGlue()); laatikko.add(teksti2); Box laatikko2 = Box.createVerticalBox(); laatikko2.add(new JLabel("Vastaus alla olevaan kenttään")); laatikko2.add(vastaus); teksti1.getDocument().addDocumentListener(new DokumentinKuuntelija()); teksti2.getDocument().addDocumentListener(new DokumentinKuuntelija()); this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); this.addWindowListener(new WindowAdapter() { public void windowClosed(WindowEvent e) { System.exit(0); } }); this.getContentPane().setLayout(new BorderLayout()); this.setTitle("Dokumentin tapahtumankäsittely"); this.getContentPane().add(laatikko, BorderLayout.NORTH); this.getContentPane().add(laatikko2, BorderLayout.SOUTH); this.setSize(200, 150); this.setVisible(true); } public void laske_summa() { try { double luku1 = new Double(teksti1.getText()).doubleValue(); double luku2 = new Double(teksti2.getText()).doubleValue(); double summa = luku1 + luku2; vastaus.setText(new Double(summa).toString()); } catch (Exception p) { vastaus.setText("Lasken vain reaaliluvuilla!"); } } class DokumentinKuuntelija implements DocumentListener { public void insertUpdate(DocumentEvent e) { laske_summa(); } public void removeUpdate(DocumentEvent e) { laske_summa(); } public void changedUpdate(DocumentEvent e) { } } }