Mega Code Archive

 
Categories / Java / Tiny Application
 

A calculator

import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class Calculator extends JPanel implements ActionListener {   private JTextField display = new JTextField("0");   private String buttonText = "789/456*123-0.=+";   private double result = 0;   private String operator = "=";   private boolean calculating = true;   public Calculator() {     setLayout(new BorderLayout());     display.setEditable(false);     add(display, "North");     JPanel p = new JPanel();     p.setLayout(new GridLayout(4, 4));     for (int i = 0; i < buttonText.length(); i++) {       JButton b = new JButton(buttonText.substring(i, i + 1));       p.add(b);       b.addActionListener(this);     }     add(p, "Center");   }   public void actionPerformed(ActionEvent evt) {     String cmd = evt.getActionCommand();     if ('0' <= cmd.charAt(0) && cmd.charAt(0) <= '9' || cmd.equals(".")) {       if (calculating)         display.setText(cmd);       else         display.setText(display.getText() + cmd);       calculating = false;     } else {       if (calculating) {         if (cmd.equals("-")) {           display.setText(cmd);           calculating = false;         } else           operator = cmd;       } else {         double x = Double.parseDouble(display.getText());         calculate(x);         operator = cmd;         calculating = true;       }     }   }   private void calculate(double n) {     if (operator.equals("+"))       result += n;     else if (operator.equals("-"))       result -= n;     else if (operator.equals("*"))       result *= n;     else if (operator.equals("/"))       result /= n;     else if (operator.equals("="))       result = n;     display.setText("" + result);   }   public static void main(String[] args) {     JFrame frame = new JFrame();     frame.setTitle("Calculator");     frame.setSize(200, 200);     frame.addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         System.exit(0);       }     });     Container contentPane = frame.getContentPane();     contentPane.add(new Calculator());     frame.show();   } }