您的位置:首页 > 编程语言 > Java开发

JAVA初学,写了个计算器

2016-04-08 11:02 435 查看
package calculator;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

public class Calculator {

 

 public static void main(String[] args) {

  MyFrame mm = new MyFrame();

 }

}

class MyFrame extends Frame {

 TextField tf = new TextField(25);

 JButton backspace= new JButton("BS");

 JButton CE = new JButton("CE");

 JButton b0 = new JButton("0");

 JButton eql = new JButton("=");

 JButton add = new JButton("+");

 JButton b1 = new JButton("1");

 JButton b2 = new JButton("2");

 JButton b3 = new JButton("3");

 JButton b4 = new JButton("4");

 JButton b5 = new JButton("5");

 JButton b6 = new JButton("6");

 JButton b7 = new JButton("7");

 JButton b8 = new JButton("8");

 JButton b9 = new JButton("9");

 JButton dvi = new JButton("÷");

 JButton mul = new JButton("*");

 JButton sub = new JButton("-");

 JButton C = new JButton(".");

public  MyFrame() {

  

  JLabel subject = new JLabel("                         计算器");

  subject.setForeground(Color.black);

  JPanel pla = new JPanel();

  pla.add(subject);

  backspace.addActionListener(new listen(this));

  CE.addActionListener(new listen(this));

  C.addActionListener(new listen(this));

  b0.addActionListener(new listen(this));

  b1.addActionListener(new listen(this));

  b2.addActionListener(new listen(this));

  b3.addActionListener(new listen(this));

  b4.addActionListener(new listen(this));

  b5.addActionListener(new listen(this));

  b6.addActionListener(new listen(this));

  b7.addActionListener(new listen(this));

  b8.addActionListener(new listen(this));

  b9.addActionListener(new listen(this));

  add.addActionListener(new listen(this));

  sub.addActionListener(new listen(this));

  mul.addActionListener(new listen(this));

  dvi.addActionListener(new listen(this));

  eql.addActionListener(new listen(this));

  

  JFrame name = new JFrame("McNema");

  JPanel p = new JPanel();

  p.setLayout(new GridLayout(3,1,0,4));

  JPanel p1 = new JPanel();

  JPanel p2 = new JPanel();

  p2.setLayout(new GridLayout(4,4,4,4));

  p2.add(b7);

  p2.add(b8);

  p2.add(b9);

  p2.add(dvi);

  p2.add(b4);

  p2.add(b5);

  p2.add(b6);

  p2.add(mul);

  p2.add(b1);

  p2.add(b2);

  p2.add(b3);

  p2.add(sub);

  p2.add(b0);

  p2.add(add);

  p2.add(eql);

  p2.add(C);

  JPanel p3 = new JPanel();

  p3.setLayout(new GridLayout(1,2,2,2));

  //Panel p4 = new Panel();

 // BorderLayout s = new BorderLayout();

 // p4.setLayout(new GridLayout(1,3,0,0));

 // p4.add(b0, BorderLayout.WEST);

 // p4.add(eql, BorderLayout.CENTER);

 // p4.add(add, BorderLayout.EAST);

  p1.add(tf);// 放置的是计算器的输入框

  CE.setForeground(Color.black);

  C.setForeground(Color.black);

  backspace.setForeground(Color.black);

  p3.add(backspace);

  p3.add(CE);

  p.add(subject, BorderLayout.NORTH);

  p.add(p1, BorderLayout.CENTER);

  p.add(p3, BorderLayout.SOUTH);

  name.setLayout(new BorderLayout(30, 5));

  name.add(p, BorderLayout.NORTH);

  name.add(p2, BorderLayout.CENTER);

 // name.add(p4, BorderLayout.SOUTH);

  name.pack();

  name.setVisible(true);

  name.setLocation(900, 300);

  name.setSize(200, 300);

  name.setResizable(false);

 }

}

class listen implements ActionListener {

 MyFrame dd;

 listen(MyFrame ds) {

  this.dd = ds;

 }

 public static Double zhi = 0.0;

 public static Double nextzhi = 0.0;

 public static Double sum = 0.0;

 public static int fuhao;

 public void actionPerformed(ActionEvent e) {

  // TODO Auto-generated method stub

  if (dd.b1 == e.getSource()) {

   dd.tf.setText(dd.tf.getText() + "1");

  } else if (dd.b2 == e.getSource()) {

   dd.tf.setText(dd.tf.getText() + "2");

  } else if (dd.b3 == e.getSource()) {

   dd.tf.setText(dd.tf.getText() + "3");

  } else if (dd.b4 == e.getSource()) {

   dd.tf.setText(dd.tf.getText() + "4");

  } else if (dd.b5 == e.getSource()) {

   dd.tf.setText(dd.tf.getText() + "5");

  } else if (dd.b6 == e.getSource()) {

   dd.tf.setText(dd.tf.getText() + "6");

  } else if (dd.b7 == e.getSource()) {

   dd.tf.setText(dd.tf.getText() + "7");

  } else if (dd.b8 == e.getSource()) {

   dd.tf.setText(dd.tf.getText() + "8");

  } else if (dd.b9 == e.getSource()) {

   dd.tf.setText(dd.tf.getText() + "9");

  } else if (dd.C == e.getSource()) {
 if(dd.tf.getText().indexOf(".")<0)
  dd.tf.setText(dd.tf.getText() + ".");
 else
 ;

  } else if (dd.mul == e.getSource()) {// 计算乘法

   fuhao = 1;

   zhi = Double.valueOf(dd.tf.getText());// 得到了文本框里的值;

   dd.tf.setText("");

  } else if (dd.dvi == e.getSource()) {// 计算除法

   fuhao = 2;

   zhi = Double.valueOf(dd.tf.getText());// 得到了文本框里的值;

   dd.tf.setText("");

  } else if (dd.sub == e.getSource()) {// 计算减法

   fuhao = 3;

   zhi = Double.valueOf(dd.tf.getText());// 得到了文本框里的值;

   dd.tf.setText("");

  } else if (dd.add == e.getSource()) {// 计算加法
  fuhao = 4;
  zhi = Double.valueOf(dd.tf.getText());// 得到了文本框里的值;
  dd.tf.setText("");

  }else if (e.getSource()==dd.backspace) {// 退格 得到里面的值.从最后的一位开始删除

   StringBuffer sb = new StringBuffer(dd.tf.getText());

   int changdu = sb.length();

   if (changdu > 0) {

    sb.deleteCharAt(changdu - 1);// 删除的是最后的一位

    dd.tf.setText(sb.toString());

   } else {

    dd.tf.setText("");

   }

  } else if (dd.CE == e.getSource()) {// 清零

   zhi = 0.0;

   nextzhi = 0.0;

   sum = 0.0;

   dd.tf.setText("");

  }else if (dd.C == e.getSource()) {// 清零

    zhi = 0.0;

    nextzhi = 0.0;

    sum = 0.0;

    dd.tf.setText("");

    }else if (dd.b0 == e.getSource()) {

   dd.tf.setText(dd.tf.getText() + "0");

  } else if (dd.eql == e.getSource()) {// 等号;

   nextzhi = Double.valueOf(dd.tf.getText());// 得到了文本框里的值;

   dd.tf.setText("");

   if (fuhao == 1) {// 计算的是乘法;

    sum = zhi * nextzhi;

    dd.tf.setText(sum + "");

   } else if (fuhao == 2) {// 计算除法
  if(nextzhi==0){
  dd.tf.setText("error");
  }
  else{
  sum = zhi / nextzhi;

    dd.tf.setText(String.valueOf(sum));
  } 

    //dd.tf.setText(sum + "");

   } else if (fuhao == 3) {// 计算减法

    sum = zhi - nextzhi;

    dd.tf.setText(sum + "");

   } else if (fuhao == 4) {// 符号为四算的是加法;

    sum = zhi + nextzhi;

    dd.tf.setText(String.valueOf(sum));

   }

  } 

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java