📄 calculator.java
字号:
import java.awt.*;
import java.applet.*;
public class Calculator extends Applet
{
private TextField tfAnswer;
private Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;
private Button bPoint,bEqual,bPlus,bMinus,bClear,bMulti,bDivision;
private String OperatorCurrent,OperatorPre;
private String ForeScreen,BackScreen;
private boolean isFloat = false;
public void init()
{
OperatorCurrent = new String("");
OperatorPre = new String("");
ForeScreen = new String("");
BackScreen = new String("");
this.setBackground(Color.gray);
this.setForeground(Color.blue);
setLayout(null);
tfAnswer = new TextField();
tfAnswer.setBounds(5,5,100,20);
this.add(tfAnswer);
bClear = new Button("C");
bClear.setBounds(5,30,20,20);
bClear.setBackground(Color.pink);
this.add(bClear);
bDivision = new Button("/");
bDivision.setBounds(30,30,20,20);
bDivision.setBackground(Color.green);
this.add(bDivision);
bMulti = new Button("*");
bMulti.setBounds(55,30,20,20);
bMulti.setBackground(Color.green);
this.add(bMulti);
bMinus = new Button("-");
bMinus.setBounds(80,30,20,20);
bMinus.setBackground(Color.green);
this.add(bMinus);
b7 = new Button("7");
b7.setBounds(5,55,20,20);
this.add(b7);
b8 = new Button("8");
b8.setBounds(30,55,20,20);
this.add(b8);
b9 = new Button("9");
b9.setBounds(55,55,20,20);
this.add(b9);
b4 = new Button("4");
b4.setBounds(5,80,20,20);
this.add(b4);
b5 = new Button("5");
b5.setBounds(30,80,20,20);
this.add(b5);
b6 = new Button("6");
b6.setBounds(55,80,20,20);
this.add(b6);
bPlus = new Button("+");
bPlus.setBounds(80,55,20,45);
bPlus.setBackground(Color.green);
this.add(bPlus);
b1 = new Button("1");
b1.setBounds(5,105,20,20);
this.add(b1);
b2 = new Button("2");
b2.setBounds(30,105,20,20);
this.add(b2);
b3 = new Button("3");
b3.setBounds(55,105,20,20);
this.add(b3);
b0 = new Button("0");
b0.setBounds(5,130,45,20);
this.add(b0);
bPoint = new Button(".");
bPoint.setBounds(55,130,20,20);
this.add(bPoint);
bEqual = new Button("=");
bEqual.setBounds(80,105,20,45);
bEqual.setBackground(Color.green);
this.add(bEqual);
}
public boolean action(Event e, Object o)
{
String s = new String("");
if(e.target instanceof Button)
{
if((e.target == b0)||(e.target == b1)||(e.target == b2)||
(e.target == b3)||(e.target == b4)||(e.target == b5)||
(e.target == b6)||(e.target == b7)||(e.target == b8)||
(e.target == b9)||(e.target == bPoint))
{
if(e.target != bPoint)
{
s = (String)o;
System.out.print(s);
doForeScreen(s);
}
if((e.target == bPoint)&&(!isFloat))
{
isFloat = true;
s = (String)o;
if(ForeScreen.equals(""))
{
ForeScreen += "0.";
repaint();
}
else
{
System.out.print(s);
doForeScreen(s);
}
}
}
if(e.target == bClear)
{
doClear();
}
if((e.target == bMulti)||(e.target == bDivision)||
(e.target == bPlus)||(e.target == bMinus))
{
if(ForeScreen != "")
{
OperatorCurrent = ((String)o);
doOperator();
System.out.print((String)o);
}
else
{
OperatorPre = ((String)o);
}
}
if(e.target == bEqual)
{
doOperator();
}
}
return true;
}
public void doOperator()
{
double dFore,dBack;
Double d;
if(OperatorPre.equals(""))
{
BackScreen = ForeScreen;
ForeScreen = "";
tfAnswer.setText(BackScreen);
repaint();
}
else
{
dFore = (new Double(ForeScreen)).doubleValue();
dBack = (new Double(BackScreen)).doubleValue();
ForeScreen = "";
BackScreen = tfAnswer.getText();
if(OperatorPre.equals("+"))
{
d = new Double((dBack + dFore));
tfAnswer.setText(d.toString());
BackScreen = d.toString();
repaint();
}
if(OperatorPre.equals("-"))
{
d = new Double((dBack - dFore));
tfAnswer.setText(d.toString());
BackScreen = d.toString();
repaint();
}
if(OperatorPre.equals("*"))
{
d = new Double((dBack * dFore));
tfAnswer.setText(d.toString());
BackScreen = d.toString();
repaint();
}
if(OperatorPre.equals("/"))
{
d = new Double((dBack / dFore));
tfAnswer.setText(d.toString());
BackScreen = d.toString();
repaint();
}
}
OperatorPre = OperatorCurrent;
repaint();
}
public void paint(Graphics g)
{
//tfAnswer.setText(ForeScreen);
}
public void doForeScreen(String s)
{
ForeScreen += s;
tfAnswer.setText(ForeScreen);
repaint();
}
public void doBackScreen(String s)
{
BackScreen = ForeScreen;
ForeScreen = "";
tfAnswer.setText(ForeScreen);
repaint();
}
public void doClear()
{
OperatorCurrent = "";
OperatorPre = "";
ForeScreen = "";
BackScreen = "";
isFloat = false;
tfAnswer.setText(ForeScreen);
repaint();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -