import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator2 extends Applet implements ActionListener
{
private TextField input = new TextField("",30);
private Button backSpace = new Button("BackSpace");
private Button CE = new Button("CE");
private Button C = new Button("C");
private Button num7 = new Button("7");
private Button num8 = new Button("8");
private Button num9 = new Button("9");
private Button num4 = new Button("4");
private Button num5 = new Button("5");
private Button num6 = new Button("6");
private Button num1 = new Button("1");
private Button num2 = new Button("2");
private Button num3 = new Button("3");
private Button num0 = new Button("0");
private Button decimal = new Button(".");
private Button plus = new Button("+");
private Button subtract = new Button("-");
private Button multiply = new Button("*");
private Button division = new Button("/");
private Button amount = new Button(" = ");
private StringBuffer str=new StringBuffer();
double x,y;
int operator; //用于判断加减乘除等符号
public void init()
{
resize(255,255);
Panel panel1=new Panel();
Panel panel2=new Panel();
Panel panel3=new Panel();
panel2.add(backSpace);
backSpace.setForeground(new Color(255,0,0));
backSpace.addActionListener(this);
panel2.add(CE);
CE.setForeground(new Color(255,0,0));
CE.addActionListener(this);
panel2.add(C);
C.setForeground(new Color(255,0,0));
C.addActionListener(this);
panel1.setLayout(new BorderLayout());
panel1.add("North",input);
panel1.add("Center",panel2);
panel3.setLayout(new GridLayout(4,4));
panel3.add(num7);
num7.setForeground(new Color(0,0,255));
num7.addActionListener(this);
panel3.add(num8);
num8.setForeground(new Color(0,0,255));
num8.addActionListener(this);
panel3.add(num9);
num9.setForeground(new Color(0,0,255));
num9.addActionListener(this);
panel3.add(plus);
plus.setForeground(new Color(255,0,0));
plus.addActionListener(this);
panel3.add(num4);
num4.setForeground(new Color(0,0,255));
num4.addActionListener(this);
panel3.add(num5);
num5.setForeground(new Color(0,0,255));
num5.addActionListener(this);
panel3.add(num6);
num6.setForeground(new Color(0,0,255));
num6.addActionListener(this);
panel3.add(subtract);
subtract.setForeground(new Color(255,0,0));
subtract.addActionListener(this);
panel3.add(num1);
num1.setForeground(new Color(0,0,255));
num1.addActionListener(this);
panel3.add(num2);
num2.setForeground(new Color(0,0,255));
num2.addActionListener(this);
panel3.add(num3);
num3.setForeground(new Color(0,0,255));
num3.addActionListener(this);
panel3.add(multiply);
multiply.setForeground(new Color(255,0,0));
multiply.addActionListener(this);
panel3.add(num0);
num0.setForeground(new Color(0,0,255));
num0.addActionListener(this);
panel3.add(decimal);
decimal.setForeground(new Color(0,0,255));
decimal.addActionListener(this);
panel3.add(amount);
amount.setForeground(new Color(0,0,255));
amount.addActionListener(this);
setLayout(new BorderLayout());
panel3.add(division);
division.setForeground(new Color(255,0,0));
division.addActionListener(this);
add("North",panel1);
add("Center",panel3);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==plus)
{
x=Double.parseDouble(input.getText().trim());
str.setLength(0);
operator=0;
}
else if(e.getSource()==subtract)
{
x=Double.parseDouble(input.getText().trim());
str.setLength(0);
operator=1;
}
else if(e.getSource()==multiply)
{
x=Double.parseDouble(input.getText().trim());
str.setLength(0);
operator=2;
}
else if(e.getSource()==division)
{
x=Double.parseDouble(input.getText().trim());
str.setLength(0);
operator=3;
}
else if(e.getSource()==backSpace)
{
String s = input.getText();
input.setText("");
str.setLength(s.length() - 1);
for (int i = 0; i < s.length() - 1; i++) {
char a = s.charAt(i);
input.setText(input.getText() + a);
}
}
else if(e.getSource()==CE)
{
input.setText("");
//x=Double.parseDouble(input.getText().trim());
str.setLength(0);
}
else if(e.getSource()==C)
{
input.setText("");
str.setLength(0);
x=0;
}
else if(e.getSource()==amount)
{
str.setLength(0);
switch(operator)
{
case 0:input.setText(""+(x+y));break;
case 1:input.setText(""+(x-y));break;
case 2:input.setText(""+(x*y));break;
case 3:input.setText(""+(x/y));break;
}
}
else
{
input.setText(str.append(e.getActionCommand()).toString());
y=Double.parseDouble(input.getText().trim());
}
}
}