f=new Frame("计算器");p=new Panel();p.setLayout(new GridLayout(4,4));tf=new TextField(30);b1=new Button("7");b2=new Button("8");b3=new Button("9");b4=new Button("+");b5=new Button("4");b6=new Button("5");b7=new Button("6");b8=new Button("-");b9=...    
求一个java计算器原代码,最好有文档说明。
    import java.awt.*; 
import java.awt.event.*; 
public class Calculator extends WindowAdapter implements ActionListener 
{ 
private double result=0,data1=0,radixPointDepth=1; 
private boolean radixPointIndicate=false,resultIndicate=false; 
private char prec='+'; 
private Frame f; 
private TextField tf; 
private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17; 
private Panel p; 
static public void main(String args[]) 
{ 
Calculator de=new Calculator(); 
de.go(); 
} 
public void go() 
{ 
f=new Frame("计算器"); 
p=new Panel(); 
p.setLayout(new GridLayout(4,4));  
tf=new TextField(30); 
b1=new Button("7"); 
b2=new Button("8"); 
b3=new Button("9"); 
b4=new Button("+"); 
b5=new Button("4"); 
b6=new Button("5"); 
b7=new Button("6"); 
b8=new Button("-"); 
b9=new Button("1"); 
b10=new Button("2"); 
b11=new Button("3"); 
b12=new Button("*"); 
b13=new Button("0"); 
b14=new Button("."); 
b15=new Button("="); 
b16=new Button("/"); 
b17=new Button("清零"); 
f.add(tf,"North");  
f.add(p,"Center");  
f.add(b17,"South");  
p.add(b1); 
p.add(b2); 
p.add(b3); 
p.add(b4); 
p.add(b5); 
p.add(b6); 
p.add(b7); 
p.add(b8); 
p.add(b9); 
p.add(b10); 
p.add(b11); 
p.add(b12); 
p.add(b13); 
p.add(b14); 
p.add(b15); 
p.add(b16); 
b1.addActionListener(this); 
b2.addActionListener(this); 
b3.addActionListener(this); 
b4.addActionListener(this); 
b5.addActionListener(this); 
b6.addActionListener(this); 
b7.addActionListener(this); 
b8.addActionListener(this); 
b9.addActionListener(this); 
b10.addActionListener(this); 
b11.addActionListener(this); 
b12.addActionListener(this); 
b13.addActionListener(this); 
b14.addActionListener(this); 
b15.addActionListener(this); 
b16.addActionListener(this); 
b17.addActionListener(this); 
f.addWindowListener(this);  
f.setSize(250,190);  
f.setVisible(true);  
} 
public void actionPerformed(ActionEvent e) 
{ 
String s; 
s=e.getActionCommand(); 
switch(s.charAt(0)) 
{ 
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':  
if(resultIndicate) 
{ 
result=0; 
data1=0; 
prec='+'; 
} 
Integer Int1=new Integer(s); 
if(radixPointIndicate) 
{ 
radixPointDepth=radixPointDepth/10; 
data1=data1+(Int1.intValue())*radixPointDepth; 
} 
else 
{ 
data1=data1*10+(Int1.intValue()); 
} 
Double displayNumber=new Double(data1); 
tf.setText(displayNumber.toString()); 
resultIndicate=false; 
break; 
case '+': case '-':case '*':case '/':case '=':  
if(s.charAt(0)!='='&&resultIndicate) 
{ 
prec=s.charAt(0); 
resultIndicate=false; 
} 
else 
{ 
switch(prec) 
{ 
case '+': 
result=result+data1; 
break; 
case '-': 
result=result-data1; 
break; 
case '*': 
result=result*data1; 
break; 
case '/': 
result=result/data1; 
break; 
} 
} 
radixPointIndicate=false; 
radixPointDepth=1; 
displayNumber=new Double(result); 
tf.setText(displayNumber.toString()); 
if(s.charAt(0)!='=') 
{ 
data1=0; 
prec=s.charAt(0); 
} 
else 
{ 
resultIndicate=true; 
} 
break; 
case '.': 
radixPointIndicate=true; 
break; 
} 
if(s.equals("清零")) 
{ 
result=0; 
data1=0; 
radixPointDepth=1; 
tf.setText(""); 
} 
} 
public void windowClosing(WindowEvent e) 
{ 
System.exit(0); 
} 
}2007-01-22