Witajcie, mam na zajęcia napisać kalkulator walut. Kurs Euro, Funta i Franka musi być wpisywany ręcznie w okienkach.
Problem w tym, że podczas obliczania nie bierze pod uwagę wpisanych kursów tylko dzieli przez 0 i wyskakuje błąd.
Dodam że jestem początkujący w Javie.
Kod:
package kalkulatorwalut;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
public class KalkulatorWalut extends JFrame implements ActionListener {
JLabel etyEuro = new JLabel("Euro: ");
JTextField Euro1 = new JTextField("0", 10);
JLabel etyFunt = new JLabel("Funt: ");
JTextField Funt1 = new JTextField("0", 10);
JLabel etyFrank = new JLabel("Frank: ");
JTextField Frank1 = new JTextField("0", 10);
JLabel etyZloty = new JLabel("Złoty: ");
JTextField Zloty1 = new JTextField("0", 10);
JLabel etyZloty2 = new JLabel("Złoty: ");
JTextField Zloty2 = new JTextField("0", 10);
JLabel etyZloty3 = new JLabel("Złoty: ");
JTextField Zloty3 = new JTextField("0", 10);
JLabel etyZloty4 = new JLabel("Złoty: ");
JTextField Zloty4 = new JTextField("0", 10);
JLabel etyEuro2 = new JLabel("EUR: ");
JTextField Euro2 = new JTextField("0", 5);
JLabel etyFunt2 = new JLabel("GBP: ");
JTextField Funt2 = new JTextField("0", 5);
JLabel etyFrank2 = new JLabel("CHF: ");
JTextField Frank2 = new JTextField("0", 5);
long kursEuro;
long kursFunta;
long kursFranka;
long euroNaZloty;
long funtNaZloty;
long frankNaZloty;
long zlotyNaEuro;
long zlotyNaFunt;
long zlotyNaFrank;
public KalkulatorWalut() {
setTitle("Kalkulator Walut");
Toolkit zestaw = Toolkit.getDefaultToolkit();
Dimension rozmiarEkranu = zestaw.getScreenSize();
int szerEkranu = rozmiarEkranu.width;
int wysEkranu = rozmiarEkranu.height;
setBounds(szerEkranu / 4, wysEkranu / 4, szerEkranu / 2, wysEkranu / 2);
setResizable(false);
setLayout(new BorderLayout());
JMenuBar pasekMenu = new JMenuBar();
JMenu mEdycja = new JMenu("Edycja");
JMenu mPomoc = new JMenu("Pomoc");
pasekMenu.add(mEdycja);
pasekMenu.add(mPomoc);
JMenuItem kursEuro = new JMenuItem("Kurs Euro");
kursEuro.setActionCommand("11");
kursEuro.addActionListener(this);
JMenuItem kursFunta = new JMenuItem("Kurs Funta");
kursFunta.setActionCommand("12");
kursFunta.addActionListener(this);
JMenuItem kursFranka = new JMenuItem("Kurs Franka");
kursFranka.setActionCommand("13");
kursFranka.addActionListener(this);
JMenuItem zakoncz = new JMenuItem("Zakoncz");
zakoncz.setAccelerator(KeyStroke.getKeyStroke("ctrl K"));
zakoncz.setActionCommand("14");
zakoncz.addActionListener(this);
JMenuItem autor = new JMenuItem("O Autorze");
autor.setActionCommand("21");
autor.addActionListener(this);
mEdycja.add(kursEuro);
mEdycja.add(kursFunta);
mEdycja.add(kursFranka);
mEdycja.addSeparator();
mEdycja.add(zakoncz);
mPomoc.add(autor);
setJMenuBar(pasekMenu);
mPomoc.setMnemonic('P');
mEdycja.setMnemonic('E');
JPanel lewyPanel = new JPanel(new GridLayout(4, 1));
JPanel euroPanel = new JPanel(new FlowLayout());
JPanel funtPanel = new JPanel(new FlowLayout());
JPanel frankPanel = new JPanel(new FlowLayout());
JPanel zlotyPanel = new JPanel(new FlowLayout());
euroPanel.add(etyEuro);
euroPanel.add(Euro1);
funtPanel.add(etyFunt);
funtPanel.add(Funt1);
frankPanel.add(etyFrank);
frankPanel.add(Frank1);
zlotyPanel.add(etyZloty);
zlotyPanel.add(Zloty1);
lewyPanel.add(euroPanel);
lewyPanel.add(funtPanel);
lewyPanel.add(frankPanel);
lewyPanel.add(zlotyPanel);
add(lewyPanel, BorderLayout.WEST);
JPanel prawyPanel = new JPanel(new GridLayout(4, 1));
JPanel zloty2Panel = new JPanel(new FlowLayout());
JPanel zloty3Panel = new JPanel(new FlowLayout());
JPanel zloty4Panel = new JPanel(new FlowLayout());
JPanel walutyPanel = new JPanel(new FlowLayout());
zloty2Panel.add(etyZloty2);
zloty2Panel.add(Zloty2);
zloty3Panel.add(etyZloty3);
zloty3Panel.add(Zloty3);
zloty4Panel.add(etyZloty4);
zloty4Panel.add(Zloty4);
walutyPanel.add(etyEuro2);
walutyPanel.add(Euro2);
walutyPanel.add(etyFunt2);
walutyPanel.add(Funt2);
walutyPanel.add(etyFrank2);
walutyPanel.add(Frank2);
prawyPanel.add(zloty2Panel);
prawyPanel.add(zloty3Panel);
prawyPanel.add(zloty4Panel);
prawyPanel.add(walutyPanel);
add(prawyPanel, BorderLayout.CENTER);
JPanel panelPrzyciski = new JPanel(new GridLayout(1, 2));
JButton oblicz = new JButton("Oblicz");
oblicz.setActionCommand("31");
oblicz.addActionListener(this);
JButton wyczysc = new JButton("Wyczyść");
wyczysc.setActionCommand("32");
wyczysc.addActionListener(this);
panelPrzyciski.add(oblicz);
panelPrzyciski.add(wyczysc);
add(panelPrzyciski, BorderLayout.SOUTH);
Zloty2.setEditable(false);
Zloty3.setEditable(false);
Zloty4.setEditable(false);
Euro2.setEditable(false);
Funt2.setEditable(false);
Frank2.setEditable(false);
}
public static void main(String[] args) {
KalkulatorWalut nt = new KalkulatorWalut();
nt.setVisible(true);
nt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
switch (Integer.parseInt(e.getActionCommand())) {
case 11: {
String kursEuroS = JOptionPane.showInputDialog("Podaj kurs euro");
long kursEuro = Integer.parseInt(kursEuroS);
break;
}
case 12: {
String kursFuntaS = JOptionPane.showInputDialog("Podaj kurs funta");
long kursFunta = Integer.parseInt(kursFuntaS);
break;
}
case 13: {
String kursFrankaS = JOptionPane.showInputDialog("Podaj kurs franka");
long kursFranka = Integer.parseInt(kursFrankaS);
break;
}
case 14: {
System.exit(0);
break;
}
case 21: {
JOptionPane.showMessageDialog(this, "Autor: Kamil Recheta");
break;
}
case 31: {
long iloscEuro = Integer.parseInt(Euro1.getText());
long iloscFunta = Integer.parseInt(Funt1.getText());
long iloscFranka = Integer.parseInt(Frank1.getText());
long iloscZlotego = Integer.parseInt(Zloty1.getText());
long euroNaZloty = iloscEuro * kursEuro;
long funtNaZloty = iloscFunta * kursFunta;
long frankNaZloty = iloscFranka * kursFranka;
long zlotyNaEuro = iloscZlotego / kursEuro;
long zlotyNaFunt = iloscZlotego / kursFunta;
long zlotyNaFrank = iloscZlotego / kursFranka;
Zloty2.setText(" " + euroNaZloty + " ");
Zloty3.setText(" " + funtNaZloty + " ");
Zloty4.setText(" " + frankNaZloty + " ");
Euro2.setText(" " + zlotyNaEuro + " ");
Funt2.setText(" " + zlotyNaFunt + " ");
Frank2.setText(" " + zlotyNaFrank + " ");
break;
}
case 32: {
Zloty1.setText("0");
Euro1.setText("0");
Funt1.setText("0");
Frank1.setText("0");
Zloty2.setText("0");
Zloty3.setText("0");
Zloty4.setText("0");
Euro2.setText("0");
Funt2.setText("0");
Frank2.setText("0");
break;
}
}
}
}