import java.awt.*; import javax.swing.*; import java.awt.event.*; /* Laskinharjoitus ja ryhmänäppäimet ja niiden tilan tutkiminen. Useamman asettelijan käyttö. - actionPerformed(ActionEvent e) */ public class RSwing02 extends JApplet implements ItemListener, ActionListener { // Rivi1 asettelualusta JPanel rivi1 = new JPanel(); JLabel ohje1 = new JLabel("Luku1:", JLabel.RIGHT); JLabel ohje2 = new JLabel("Luku2:", JLabel.RIGHT); JLabel tulos = new JLabel("Tulos:", JLabel.RIGHT); JTextField syote1 = new JTextField(5); JTextField syote2 = new JTextField(5); // Rivi3 Laskutapakomponentit JPanel rivi3 = new JPanel(); ButtonGroup laskutapa = new ButtonGroup(); JRadioButton summa = new JRadioButton("Laske summa",true); JRadioButton erotus = new JRadioButton("Laske erotus",false); // Rivi2 asettelualusta JPanel rivi2 = new JPanel(); JButton laske = new JButton("Laske"); JButton tyhja = new JButton("Tyhjenna"); private String operandi; public void init() { operandi = "+"; syote1.setText("0"); syote2.setText("0"); GridLayout ruudunAsettelu = new GridLayout(5,1,10,10); Container ruutu = getContentPane(); ruutu.setLayout(ruudunAsettelu); // TODO: kuuntelijoiden lisäys; laske.addActionListener(this); tyhja.addActionListener(this); summa.addItemListener(this); erotus.addItemListener(this); FlowLayout asettelu1 = new FlowLayout(FlowLayout.LEFT,10,10); rivi1.setLayout(asettelu1); // Lisää laskentakomponentit riville 1 rivi1.add(ohje1); rivi1.add(syote1); rivi1.add(ohje2); rivi1.add(syote2); rivi1.add(tulos); // Lisätään rivi1 ruutuasettelijalle ruutu.add(rivi1); FlowLayout asettelu3 = new FlowLayout(FlowLayout.CENTER,10,10); rivi3.setLayout(asettelu3); // Lisää laskutapa monivalintanäppäimet riville laskutapa.add(summa); laskutapa.add(erotus); rivi3.add(summa); rivi3.add(erotus); // Lisätään rivi1 ruutuasettelijalle ruutu.add(rivi3); // Lisää käynnistyspainike riville 2 FlowLayout asettelu2 = new FlowLayout(FlowLayout.CENTER,10,10); rivi2.setLayout(asettelu2); // Lisää laskentakomponentit riville 1 rivi2.add(laske); rivi2.add(tyhja); // Lisätään rivi2 ruutuasettelijalle ruutu.add(rivi2); // Muodosta koko näyttö setContentPane(ruutu); } // end init // Kirjoita keskeytyksen tutkimismetodi public void actionPerformed(ActionEvent e) { String komento = e.getActionCommand(); // TODO: koodaa keskeytyksen tiedon käsittelyosa if (komento == "Laske") { // double a = double.parseDouble(syote1.getText()); esim 12.7 int a = Integer.parseInt(syote1.getText()); int b = Integer.parseInt(syote2.getText()); int v; if (operandi == "+") { v = a + b; tulos.setText("Summa=" + v); }// end if (operandi ... if (operandi == "-") { v = a - b; tulos.setText("Erotus=" + v); }// end if (operandi ... }// end if (komento... if (komento == "Tyhjenna") { syote1.setText("0"); syote2.setText("0"); } } public void itemStateChanged(ItemEvent e) { Object item = e.getItem(); // TODO: koodaa tähän muutoksen käsittelyosa if (item == summa) { operandi = "+"; } if (item == erotus) { operandi = "-"; } } }