[java]代码库import java.io.*;
import java.text.Format;
import java.text.NumberFormat;
import java.awt.*;
import java.awt.event.*;
public class Calc {
public static void main(String[] args){
CalcFrame CF = new CalcFrame();
}
}
class CalcFrame extends Frame{
public TextField inputArea = new TextField(30);
Panel p1 = new Panel(),p2 = new Panel();
boolean dotFg = false; //记录有没有按下小数点
boolean opFlag =false;
double d1,d2;//两操作 数
int whichSymbol =0;
int dfg = 1;
numButton b1 = new numButton("1")
,b2 = new numButton("2")
,b3 = new numButton("3")
,b4 = new numButton("4")
,b5 = new numButton("5")
,b6 = new numButton("6")
,b7 = new numButton("7")
,b8 = new numButton("8")
,b9 = new numButton("9")
,b0 = new numButton("0");
zfButton bzf= new zfButton("-");
dotButton dot = new dotButton(".");
basCalButton add = new basCalButton("+")
,sub = new basCalButton("-")
,mul = new basCalButton("*")
,div = new basCalButton("/");
funCalButton sqrt = new funCalButton("sqrt")
,sin = new funCalButton("sin")
,cos = new funCalButton("cos")
,power = new funCalButton("power")
,ln = new funCalButton("ln");
clearButton1 ce = new clearButton1("CE");
clearButton2 back = new clearButton2("
resultButton equal = new resultButton("=");
public CalcFrame(){
super("Calculator");
setLayout(new FlowLayout());
setBackground(Color.lightGray);
setSize(250,180);
setVisible(true);
inputArea.setBackground(Color.white);
p1.setBackground(Color.white);
p1.setSize(100,100);
p1.setLayout(new GridLayout(4,3));
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
p1.add(b5);
p1.add(b6);
p1.add(b7);
p1.add(b8);
p1.add(b9);
p1.add(b0);
p1.add(bzf);
p1.add(dot);
p2.setBackground(Color.white);
p2.setSize(100,100);
p2.setLayout(new GridLayout(4,3));
p2.add(div);
p2.add(sqrt);
p2.add(ln);
p2.add(mul);
p2.add(sin);
p2.add(back);
p2.add(sub);
p2.add(cos);
p2.add(ce);
p2.add(add);
p2.add(power);
p2.add(equal);
add("North",inputArea);
add(p1);
add(p2);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);}
});
}
class numButton extends Button implements ActionListener{ //数字键类
public String s1;
public numButton(String s){
super(s);
s1 =s;
setBackground(Color.cyan);
addActionListener(this);
}
public void actionPerformed(ActionEvent e) { //重写响应单击操作
if( inputArea.getText().equals("0.0")||opFlag )
{
inputArea.setText("");
opFlag = false;
}
String temp = inputArea.getText();
inputArea.setText("");
inputArea.setText(temp+s1);
}
}
class zfButton extends Button implements ActionListener{ //正负键
public String s1;
static final int flag = 0;
public zfButton(String s){
super(s);
s1 =s;
setBackground(Color.cyan);
addActionListener(this);
}
public void actionPerformed(ActionEvent e) { //重写响应单击操作
String temp = inputArea.getText();
if(!dotFg)
inputArea.setText("");
inputArea.setText("-"+temp);
}
}
class dotButton extends Button implements ActionListener{
public String s1;
public dotButton(String s){
super(s);
s1 =s;
setBackground(Color.cyan);
addActionListener(this);
}
public void actionPerformed(ActionEvent e) { //重写响应单击操作
dotFg = true;
String temp = inputArea.getText();
if(temp.equals(""))
inputArea.setText("0.");
else{
inputArea.setText(temp+".");
}
}
}
class basCalButton extends Button implements ActionListener{
public String s1;
public basCalButton(String s){
super(s);
s1 =s;
setBackground(Color.cyan);
addActionListener(this);
}
public void actionPerformed(ActionEvent e) { //重写响应单击操作
opFlag =true;
d1 = Double.parseDouble(inputArea.getText());
inputArea.setText("");
if(s1.equals("+"))
whichSymbol = 1;
else if(s1.equals("-"))
whichSymbol = 2;
else if(s1.equals("*"))
whichSymbol = 3;
else if(s1.equals("/"))
whichSymbol = 4;
}
}
class funCalButton extends Button implements ActionListener{
public String s1;
public funCalButton(String s){
super(s);
s1 =s;
setBackground(Color.cyan);
addActionListener(this);
}
public void actionPerformed(ActionEvent e) { //重写响应单击操作
double temp = Double.parseDouble(inputArea.getText());
if(s1.equals("sqrt"))
temp = Math.sqrt(temp*3.14159/180);
else if(s1.equals("sin"))
temp = Math.sin(temp*3.14159/180);
else if(s1.equals("cos"))
temp = Math.cos(temp*3.14159/180);
else if(s1.equals("power"))
{ opFlag =true;
whichSymbol = 5;
d1 = temp;
inputArea.setText("");
}
else if(s1.equals("ln"))
temp = Math.log(temp);
inputArea.setText(String.valueOf(temp));
}
}
class clearButton1 extends Button implements ActionListener{
public String s1;
public clearButton1(String s){
super(s);
s1 =s;
setBackground(Color.cyan);
addActionListener(this);
}
public void actionPerformed(ActionEvent e) { //重写响应单击操作
inputArea.setText("");
d1 =0;
d2 =0;
dotFg = false;
whichSymbol = 0;
opFlag =false;
}
}
class clearButton2 extends Button implements ActionListener{
public String s1;
public clearButton2(String s){
super(s);
s1 =s;
setBackground(Color.cyan);
addActionListener(this);
}
public void actionPerformed(ActionEvent e) { //重写响应单击操作
String temp,s1;
temp = inputArea.getText();
s1 = temp.substring(0, temp.length()-1);
inputArea.setText(s1);
}
}
class resultButton extends Button implements ActionListener{
public String s1;
public resultButton(String s){
super(s);
s1 =s;
setBackground(Color.cyan);
addActionListener(this);
}
public void actionPerformed(ActionEvent e) { //重写响应单击操作
double result = 0;
d2 = Double.parseDouble(inputArea.getText());
switch(whichSymbol){
case 1:
result = d1 + d2;
break;
case 2:
result = d1 - d2;
break;
case 3:
result = d1 * d2;
break;
case 4:
result = d1 / d2;
break;
case 5:
result = Math.pow(d1,d2);
}
NumberFormat form = NumberFormat.getIntegerInstance();
form.setMinimumFractionDigits(8);
String is = form.format(result);
inputArea.setText(is);
d1 = 0;
d2 = 0;
dotFg = false;
whichSymbol = 0;
opFlag =false;
}
}
}