import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Caltuer implements ActionListener
{
double buffop1=0.0;//运算符号前面的数
double buffop2=0.0;//运算符号后面的数
String mum="";//开始操作数
String buffer[]=new String[1];//运算符号存在buffer
Double sum=0.0;
boolean flag = true;
JFrame f;
JPanel p1,p2,p3;
JButton b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;
JTextField t;
MenuBar mb;
Menu mf,me,mh;
CheckboxMenuItem cbm;
public void show(){
f=new JFrame("计算器");
t=new JTextField ("0.",25);
t.setHorizontalAlignment(JTextField.RIGHT);
t.setEditable(false);
p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
b0=new JButton("0");
b0.addActionListener(this);
b1=new JButton("1");
b1.addActionListener(this);
b2=new JButton("2");
b2.addActionListener(this);
b3=new JButton("3");
b3.addActionListener(this);
b4=new JButton("4");
b4.addActionListener(this);
b5=new JButton("5");
b5.addActionListener(this);
b6=new JButton("6");
b6.addActionListener(this);
b7=new JButton("7");
b7.addActionListener(this);
b8=new JButton("8");
b8.addActionListener(this);
b9=new JButton("9");
b9.addActionListener(this);
b10=new JButton("MC");
b11=new JButton("MR");
b12=new JButton("MS");
b13=new JButton("M+");
b14=new JButton("sqrt");
b15=new JButton("%");
b15.addActionListener(this);
b16=new JButton("1/x");
b16.addActionListener(this);
b17=new JButton("=");
b17.addActionListener(this);
b18=new JButton("+");
b18.addActionListener(this);
b19=new JButton("-");
b19.addActionListener(this);
b20=new JButton("*");
b20.addActionListener(this);
b21=new JButton("/");
b21.addActionListener(this);
b22=new JButton("C");
b22.addActionListener(this);
b23=new JButton("CE");
b23.addActionListener(this);
b24=new JButton("Backspace");
b25=new JButton(".");
b25.addActionListener(this);
b26=new JButton("+/-");
mb=new MenuBar();
f.setMenuBar(mb);
mf=new Menu("编辑(E)");
me=new Menu("查看(V)");
mh=new Menu("帮助(H)");
mb.add(mf);
mb.add(me);
mb.add(mh);
mf.add(new MenuItem("复制(C)",new MenuShortcut(KeyEvent.VK_C)));
mf.add(new MenuItem("粘贴(P)",new MenuShortcut(KeyEvent.VK_V)));
me.add(new MenuItem("标准型(C)"));
me.add(new MenuItem("科学型(S)"));
cbm=new CheckboxMenuItem("数字分组(W)",true);
me.add(cbm);
mh.add(new MenuItem("帮助主题(H)"));
mh.add(new MenuItem("关于计算器(A)"));
p1.add(t);
f.add(p1,"North");
p2.add(b24);
p2.add(b23);
p2.add(b22);
p2.setBackground(Color.LIGHT_GRAY);
p3.setLayout(new GridLayout(4,6));
p3.setBackground(Color.LIGHT_GRAY);
p3.add(b10);p3.add(b7);p3.add(b8);p3.add(b9);p3.add(b21);p3.add(b14);
p3.add(b11);p3.add(b4);p3.add(b5);p3.add(b6);p3.add(b20);p3.add(b15);
p3.add(b12);p3.add(b1);p3.add(b2);p3.add(b3);p3.add(b19);p3.add(b16);
p3.add(b13);p3.add(b0);p3.add(b26);p3.add(b25);p3.add(b18);p3.add(b17);
f.add(p3,"Center");
f.add(p2,"South");
f.setVisible(true);
f.setSize(350,320);
//f.setResizable(false);
}
public void actionPerformed(ActionEvent e) {
char ch=e.getActionCommand().charAt(0);//返回键入的数值指定位置的字符
String ch1=String.valueOf(ch);
String ch2=e.getActionCommand();
//if(ch1.compareTo("0")>0&&ch1.compareTo("9")<=0) { mum+=ch1;t.setText(mum);}
if(ch >= '0' && ch<= '9'||ch=='.'){ mum+=ch1;t.setText(mum);}
else if(ch2=="+"||ch2=="-"||ch2=="*"||ch2=="/"||ch2=="%") {
buffop1=Double.parseDouble(mum);
mum="";
buffer[0]=ch2;}
else if(ch2=="="){
buffop2=Double.parseDouble(t.getText());
if(buffer[0]=="+")
{
sum=buffop1+buffop2;
t.setText(String.valueOf(sum));
}
else if(buffer[0]=="-")
{
sum=buffop1-buffop2;
t.setText(String.valueOf(sum));
}
else if(buffer[0]=="*")
{
sum=buffop1*buffop2;
t.setText(String.valueOf(sum));
}
else if(buffer[0]=="/"){
if(buffop2==0.0) System.out.println("divide by zero");
else {
sum=buffop1/buffop2;
t.setText(String.valueOf(sum));
}
}
else if(buffer[0]=="%"){
sum=buffop1%buffop2;
t.setText(String.valueOf(sum));
}
}
else if(ch2=="C"){mum="";t.setText("0.");}
else if(ch2=="CE"){mum="";t.setText("0.");}
}
public static void main(String[] args)
{
Caltuer tcv=new Caltuer();
tcv.show();
}
}