import java.awt.*; import javax.swing.*; import java.awt.event.*; class Kalkulator { private static JLabel tekst = new JLabel("0"); private static String forrigeTall = ""; private static int knappStorrelse = 140; private static String operasjon = "+"; public static void main(String[] args) { JFrame vindu = new JFrame("Kalkulator"); vindu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel pp = new JPanel(); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); vindu.add(pp); pp.add(panel); lagTekstStil(); panel.add(tekst); JPanel knapper = new JPanel(); panel.add(knapper); knapper.setLayout(new GridLayout(4, 3)); knapper.setBackground(Color.BLACK); leggTilTallKnapper(knapper); LeggTilOperasjonsKnapper(knapper); panel.setBackground(Color.BLACK); vindu.pack(); vindu.setVisible(true); } private static void lagTekstStil() { tekst.setBackground(Color.BLACK); tekst.setForeground(Color.WHITE); tekst.setOpaque(true); tekst.setFont(new Font("times new roman", Font.ITALIC, 40)); tekst.setAlignmentX(Component.CENTER_ALIGNMENT); tekst.setPreferredSize(new Dimension(knappStorrelse * 4, knappStorrelse)); } private static void leggTilTallKnapper(JPanel panel) { class TallKnapp extends JButton { public TallKnapp(String tall) { super(tall); setForeground(Color.WHITE); setBackground(Color.BLACK); setPreferredSize(new Dimension(knappStorrelse, knappStorrelse)); setFont(new Font("times new roman", Font.CENTER_BASELINE, 40)); addActionListener(new TallAction()); } class TallAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String nyTekst = tekst.getText(); if (!getText().equals(".")) { if (nyTekst.equals("0")) { nyTekst = ""; } } else { if (nyTekst.contains(".")) return; } nyTekst += getText(); tekst.setText(nyTekst); } } } int teller = 9; for (int i = 0; i < 3; i++) { for (int j = 2; j >= 0; j--) { String tall = Integer.toString(teller - j); TallKnapp knapp = new TallKnapp(tall); panel.add(knapp); } teller -= 3; } panel.add(new TallKnapp("0")); panel.add(new TallKnapp(".")); } private static void LeggTilOperasjonsKnapper(JPanel panel) { class OperasjonsKnapp extends JButton { public OperasjonsKnapp(String operasjon) { super(operasjon); setBackground(Color.ORANGE); setForeground(Color.BLACK); setPreferredSize(new Dimension(knappStorrelse, knappStorrelse)); setFont(new Font("times new roman", Font.BOLD, 40)); addActionListener(new OperasjonAction()); } class OperasjonAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { if (getText().equals("=")) { if (forrigeTall.equals("")) return; Double tall1 = 0.0, tall2 = 0.0; try { tall1 = Double.parseDouble(forrigeTall); tall2 = Double.parseDouble(tekst.getText()); } catch (Exception exception) { return; } Double resultat = 0.0; if (operasjon.equals("+")) { resultat = tall1 + tall2; } else if (operasjon.equals("-")) { resultat = tall1 - tall2; } else if (operasjon.equals("/")) { resultat = tall1 / tall2; } else if (operasjon.equals("*")) { resultat = tall1 * tall2; } else if (operasjon.equals("Nullstill")){ resultat = 0.0; } forrigeTall = ""; tekst.setText(Double.toString(resultat)); } else { operasjon = getText(); forrigeTall = tekst.getText(); tekst.setText("0"); } } } } panel.add(new OperasjonsKnapp("+"), 3); panel.add(new OperasjonsKnapp("-"), 7); panel.add(new OperasjonsKnapp("*"), 11); panel.add(new OperasjonsKnapp("="), 12); panel.add(new OperasjonsKnapp("/"), 15); panel.getParent().add(new OperasjonsKnapp("Nullstill")); } }