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 panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); vindu.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; } forrigeTall = ""; tekst.setText(Double.toString(resultat)); }else{ System.out.println("lol"); 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); } }