
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; |
} |
} |
|
|
} |



