import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Calculator { private JLabel screen; private boolean start; private String operator; private double result; public Calculator() { operator = "="; start = true; JFrame frame = new JFrame(); screen = new JLabel("0",JLabel.RIGHT); screen.setFont(new Font("Open Sans",Font.BOLD, 20)); frame.add(screen, BorderLayout.NORTH); frame.add(buttonsPanel(),BorderLayout.CENTER); frame.setSize(300, 300); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } private JPanel buttonsPanel(){ JPanel panel = new JPanel(); panel.setLayout(new GridLayout(4,4)); String buttons[] = { "7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+" }; for (int i = 0; i < buttons.length; i++) { panel.add(addButton(buttons[i])); } return panel; } private JButton addButton(String btnName){ JButton btn = new JButton(btnName); btn.setFont(new Font("Open Sans", Font.BOLD, 16)); btn.addActionListener(calcListener); return btn; } private ActionListener calcListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String v = ((JButton)e.getSource()).getText(); System.out.println(v); if("/*+-=".indexOf(v) >= 0){ calculate(v); }else{ insertNumber(v); } } }; public void calculate(String s){ // System.out.println("calculate: " + s); double num = Double.parseDouble(screen.getText()); if (operator.equals("=")) result = num; if (operator.equals("=")) result += num; if (operator.equals("=")) result -= num; if (operator.equals("=")) result *= num; if (operator.equals("=")) result /= num; screen.setText("" + result); operator = s; start = true; } public void insertNumber(String s){ // System.out.println("insertNumber: " + s); if(start){ screen.setText(""); start = false; } screen.setText(screen.getText() + s); } public static void main(String[] args) { Calculator calc = new Calculator(); } }