import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame implements ActionListener { private JTextField display; private double result = 0; private String operator = "="; private boolean calculating = true; public Calculator() { display = new JTextField("0", 20); display.setHorizontalAlignment(JTextField.RIGHT); display.setEditable(false); // Create panel with grid layout for buttons JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new GridLayout(4, 4, 5, 5)); String[] buttonLabels = { "7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+", }; for (String label : buttonLabels) { JButton button = new JButton(label); buttonPanel.add(button); button.addActionListener(this); } JButton clearButton = new JButton("C"); clearButton.addActionListener(e -> { result = 0; operator = "="; calculating = true; display.setText("0"); }); // Layout setLayout(new BorderLayout(5, 5)); add(display, BorderLayout.NORTH); add(buttonPanel, BorderLayout.CENTER); add(clearButton, BorderLayout.SOUTH); setTitle("Simple Calculator"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setLocationRelativeTo(null); } public void actionPerformed(ActionEvent event) { String command = event.getActionCommand(); if ( (command.charAt(0) >= '0' && command.charAt(0) <= '9') || command.equals(".") ) { if (calculating) { display.setText(command); } else { display.setText(display.getText() + command); } calculating = false; } else { if (calculating) { if (command.equals("-")) { display.setText(command); calculating = false; } else { operator = command; } } else { double x = Double.parseDouble(display.getText()); calculate(x); operator = command; calculating = true; } } } private void calculate(double n) { switch (operator) { case "+": result += n; break; case "-": result -= n; break; case "*": result *= n; break; case "/": result /= n; break; case "=": result = n; break; } display.setText("" + result); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { new Calculator().setVisible(true); }); } }