Java/Tiny Application/Calculator

Материал из Java эксперт
Перейти к: навигация, поиск

A calculator

   <source lang="java">

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();
 }

}

      </source>