import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Kalkulator { static double arg1 = 0; static double arg2 = 0; static String funksjon_utfores = ""; static JLabel tekst_boks; static String tekst_boks_innhold = ""; public static void main(String[] args) { JFrame vindu = new JFrame("Kalkulator"); vindu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel hovedPanel = new JPanel(new GridLayout(2,1)); tekst_boks = new JLabel(" Velkommen! "); tekst_boks.setHorizontalAlignment(JLabel.CENTER); hovedPanel.add(tekst_boks); JPanel knappePanel = new JPanel(new GridLayout(4, 4)); char[] knappeNavn = {'7', '8', '9', 'x', '4', '5', '6', '/', '1', '2', '3', '+', '0', '.', '=', '-'}; for (char i : knappeNavn) { if (Character.isDigit(i) || i == '.') { JButton nyKnapp = new TallKnapp(i+""); knappePanel.add(nyKnapp); } else { JButton nyKnapp = new FunksjonsKnapp(i+""); knappePanel.add(nyKnapp); } } hovedPanel.add(knappePanel); vindu.add(hovedPanel); vindu.pack(); vindu.setVisible(true); } static void leggInnTall(String tall) { if (tall.equals(".")) { leggTilKomma(); } else { tekst_boks_innhold += tall; } tekst_boks.setText(tekst_boks_innhold); } static void leggTilKomma() { if (!tekst_boks_innhold.contains(".")) { tekst_boks_innhold += "."; } } static void leggTilFunksjon(String funksjon) { if (funksjon.equals("=") && !tekst_boks_innhold.isEmpty()) { arg2 = Double.valueOf(tekst_boks_innhold); double resultat = finnResultat(); arg1 = resultat; arg2 = 0; tekst_boks_innhold = resultat+""; funksjon_utfores = ""; tekst_boks.setText(tekst_boks_innhold); return; } if (!funksjon_utfores.isEmpty()) { return; } else { funksjon_utfores = funksjon; arg1 = Double.valueOf(tekst_boks_innhold); tekst_boks_innhold = ""; tekst_boks.setText(tekst_boks_innhold); } } static double finnResultat() { if (funksjon_utfores.equals("x")) { System.out.println("Ganger."); return arg1 * arg2; } if (funksjon_utfores.equals("/")) { return arg1 / arg2; } if (funksjon_utfores.equals("+")) { return arg1 + arg2; } if (funksjon_utfores.equals("-")) { return arg1 - arg2; } return 0; } } class TallKnapp extends JButton { class TallTrykk implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Kalkulator.leggInnTall(getText()); }; } TallKnapp(String tall) { super(tall); addActionListener(new TallTrykk()); } } class FunksjonsKnapp extends JButton { class FunksjonsTrykk implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Kalkulator.leggTilFunksjon(getText()); }; } FunksjonsKnapp(String tall) { super(tall); setBackground(Color.GRAY); addActionListener(new FunksjonsTrykk()); } }