Käyttöliittymätapahtumien käsittely. Tehtävä 2.

package v13_eta;

// GRAAFISEN KÄYTTÖLIITTYMÄN OHJELMOINTI – JAVA SWING
// Käyttöliittymätapahtumien käsittely

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
* @author ark
* @task 120425.2
* @version 0.2-120430
*/

// Toteuta edellisen tehtävän luokasta uusi versio FrAlv2, johon on lisätty seuraava toiminnallisuus:
// Lopeta-nappulan painallus lopettaa ohjelman suorituksen.
// (Vihje: Kiinnitä Lopeta-nappulaan tapahtumakuuntelija, jossa on komento System.exit(0);)
// Käyttäjä kirjoittaa hinnan, joka sisältää alv:n. Kun hän painaa Laske -nappulaa,
// ohjelma laskee ja tulostaa näytölle hinnan ilman alv:ta ja alv:n osuuden hinnasta.
//
// Voit tehdä laskennan kokonaisluvuilla. Saat laskettua hinnan ilman
// alv:tä kaavalla hintaIlmanAlvta = (hintaSisAlv*100)/123 ja alv-
// osuuden siis kaavalla:
// alvnOsuus = hintaSisAlv-((hintaSisAlv*100)/123).

public class FrAlv2 extends JFrame {

private Container sisalto;

// KÄYTTÖLIITTYMÄKOMPONENTIT
private final JPanel pnVasen = new JPanel();
private final JPanel pnOikea = new JPanel();

// Vasen Sarake
private final JLabel lbTekstiAlv = new JLabel("Hinta sis. alv 23%:");
private final JLabel lbTekstiEiAlv = new JLabel("Hinta ilman alv:tä:");
private final JLabel lbTekstiAlvOsuus = new JLabel("Alv:n osuus:");
private final JButton btLaske = new JButton("Laske");

// Oikea Sarake
private final JTextField tfAlv = new JTextField("0", 10);
private final JTextField tfEiAlv = new JTextField("0", 10);
private final JTextField tfAlvOsuus = new JTextField("0", 10);
private final JButton btLopeta = new JButton("Lopeta");

//
public FrAlv2() {
setTitle("Alv-erittelijä");
setSize(300, 150);
setLocation(120, 100);
asetteleKomponentit();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

//
private void asetteleKomponentit() {
sisalto = this.getContentPane();
sisalto.setLayout(new GridLayout(0, 2)); // 2 saraketta
sisalto.add(pnVasen);
sisalto.add(pnOikea);

// pnVasen.setBorder(BorderFactory.createLineBorder(Color.gray));

pnVasen.setLayout(new GridLayout(4, 0));
pnVasen.add(lbTekstiAlv);
pnVasen.add(lbTekstiEiAlv);
pnVasen.add(lbTekstiAlvOsuus);
pnVasen.add(btLaske);

pnOikea.setLayout(new GridLayout(4, 0));
pnOikea.add(tfAlv);
pnOikea.add(btLopeta);

//
pnOikea.add(tfEiAlv);
pnOikea.add(tfAlvOsuus);
pnOikea.add(btLopeta);

//
tfEiAlv.setEditable(false);
tfAlvOsuus.setEditable(false);

//
btLaske.addActionListener(new LaskeAlv());
btLopeta.addActionListener(new Lopeta());
}

class LaskeAlv implements ActionListener {
public void actionPerformed(final ActionEvent e) {
//
final int hinta = Integer.parseInt(tfAlv.getText());
final int hintaIlmanAlvta = (hinta*100)/123;

tfEiAlv.setText("" + hintaIlmanAlvta);
tfAlvOsuus.setText("" + (hinta - hintaIlmanAlvta));
;
}
}

class Lopeta implements ActionListener {
public void actionPerformed(final ActionEvent e) {
//
System.exit(0);
}
}

public static void main(final String[] args) {
final FrAlv2 hop = new FrAlv2();
hop.setVisible(true);
}
}

Advertisements

Comments are closed.

%d bloggers like this: