import java.awt.*; import java.awt.Font.*; import javax.swing.*; import java.awt.event.*; import java.text.*; /* Swing-komponenttiharjoitus, joka muuttaa markat euroiksi tai päinvastoin. Euron kurssi on 5,94573 */ public class RSwing01 extends JApplet implements ActionListener { // Numeerisen tulostuksen muotoilija DecimalFormat df = new DecimalFormat(",##0.00"); // Vakion esittäminen final... final double kurssi = 5.94573; // HTML-koodin sijoittaminen JLabel komponenttiin String otsikko = "" + "Eurolaskin 1.0" + ""; // Luodaan laskimelle otsikkorivi JPanel rivi1 = new JPanel(); JLabel otsikkoLabel = new JLabel(otsikko, JLabel.CENTER); // Luodaan syöttö- ja tulostusrivi JPanel rivi2 = new JPanel(); JLabel summaLabel = new JLabel("Summa:", JLabel.LEFT); JTextField summaText = new JTextField(5); // Tulokset tähän komponenttiin // JLabel valuuttaLabel = new JLabel("", JLabel.LEFT); JLabel tulosLabel = new JLabel("", JLabel.LEFT); // Luodaan muunnoksen käynnistysnapit JPanel rivi3 = new JPanel(); JButton euroButton = new JButton("Euroiksi"); JButton fimButton = new JButton("Markoiksi"); // Color buttonback = new Color(100,100,200); JPanel rivi4 = new JPanel(); JLabel rahaLabel = new JLabel("", new ImageIcon("500e.gif"),JLabel.CENTER); public void init() { // NumberFormat nf = NumberFormat.getNumberInstance(); // Luodaan koko apletin ruudulle asettelija GridLayout laskimenAsettelu = new GridLayout(6,1); // Luodaan säiliö nimeltä ruutu Container ruutu = getContentPane(); // Sovelletaan säilöön laskimenAsetteluoliota ruutu.setLayout(laskimenAsettelu); // Lisätään painikkeisiin kuuntelijat euroButton.addActionListener(this); fimButton.addActionListener(this); // Luodaan ruudulle rivit // Luodaan otsikkoriville FlowLayout asettelijaoliot FlowLayout rivi1FL = new FlowLayout(FlowLayout.CENTER); // Liitä asettelija riville rivi1.setLayout(rivi1FL); // Taustaväri otsikkopanelille rivi1.setBackground(Color.yellow); // Lisää komponentit riville rivi1.add(otsikkoLabel); // Lisää otsikko riville ruutu.add(rivi1); // Lisää rivi ruudulle // Luodaan syöttö- ja tulostusriveille FlowLayout asettelijaoliot FlowLayout rivi2FL = new FlowLayout(FlowLayout.CENTER); // Liitä asettelija riville rivi2.setLayout(rivi2FL); // Lisää komponentit riville rivi2.add(summaLabel); rivi2.add(summaText); // rivi2.add(valuuttaLabel); rivi2.add(tulosLabel); // Lisää rivi ruudulle ruutu.add(rivi2); // Luodaan käynnistysriveille FlowLayout asettelijaoliot FlowLayout rivi3FL = new FlowLayout(FlowLayout.CENTER); // Liitä asettelija riville rivi3.setLayout(rivi3FL); // Lisää komponentit riville rivi3.add(euroButton); rivi3.add(fimButton); // Lisää rivi ruudulle ruutu.add(rivi3); FlowLayout rivi4FL = new FlowLayout(FlowLayout.CENTER); rivi4.setLayout(rivi4FL); rivi4.add(rahaLabel); ruutu.add(rivi4); // Sulje ruutusäiliö setContentPane(ruutu); } // end init() // Kirjoita keskeytyksen tutkimismetodi public void actionPerformed(ActionEvent e) { String komento = e.getActionCommand(); if (komento == "Euroiksi") { // Lasketaan tulos sisäisellä metodilla, jolle // välitetään tekstin syöttökomponentti. double tulos = markatEuroiksi(summaText); // Muotoillaan tulos merkkijonoon df muotoilijalla String naytatulos = df.format(tulos); // Tulosta tuloskomponenttiin muotoiltu tulos tulosLabel.setText("on " + naytatulos + " euroa"); } if (komento == "Markoiksi") { double tulos = eurotMarkoiksi(summaText); String naytatulos = df.format(tulos); tulosLabel.setText("on " + naytatulos + " markkaa"); } } //Sisäinen metodi markkojen muuntamiseksi euroiksi //Palauttaa desimaaliluvun double double markatEuroiksi(JTextField sum) { double dSum = 0; if (sum != null) { // Merkkimuotoisen tiedon muunto double-muotoon dSum = Double.parseDouble(sum.getText()); dSum = dSum / kurssi; } // end if .. return dSum; }// end markatEur... double eurotMarkoiksi(JTextField sum) { double dSum = 0; if (sum != null) { dSum = Double.parseDouble(sum.getText()); dSum = dSum * kurssi; } // end if .. return dSum; }// end eurotMark... }