import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class CalculatorApplet extends Applet{
TextField text=new TextField();
Label label=new Label("Calculator");
public Button buttons[]=new Button[15];
//初始化
public void init(){
setBackground(Color.gray);
GridBagLayout gridbag=new GridBagLayout();
setLayout(gridbag);
for(int i=0;i<10;i++){
buttons[i]=new Button(""+i+"");
}
buttons[10]=new Button("-");
buttons[11]=new Button("*");
buttons[12]=new Button("CLR");
buttons[13]=new Button("+");
buttons[14]=new Button("=");
int px[]={0,0,4,7,0,4,7,0,4,7,0,4,7,0,4,7,0};
int py[]={0,3,3,3,5,5,5,7,7,7,9,9,9,11,11,11,2};
int pwidth[]={10,4,3,3,4,3,3,4,3,3,4,3,3,4,3,3,10};
int pheight[]={2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
GridBagConstraints cons[]=new GridBagConstraints[17];
for(int i=0;i<17;i++){
cons[i]=new GridBagConstraints();
cons[i].fill=new GridBagConstraints().BOTH;
cons[i].gridx=px[i];
cons[i].gridwidth=pwidth[i];
cons[i].gridheight=pheight[i];
if(i==0){
gridbag.setConstraints(text,cons[0]);
add(text);
}else if(i==16){
gridbag.setConstraints(label,cons[16]);
add(label);
}else{
gridbag.setConstraints(buttons[i-1],cons[i]);
add(buttons[i-1]);
}
}
//以上摆放各个零件
text.setText("");
text.setEditable(false);
text.setFont(new Font("TimesRoman",Font.BOLD,14));
text.setBackground(Color.cyan);
label.setBackground(Color.lightGray);
//以上做一些初始化工作
for(int i=0;i<15;i++){
buttons[i].addActionListener(new MyActionListener(this));
//登记每个按钮的事件监者
}
}
//绘制屏幕
public void paint(Graphics g){
g.draw3DRect(35,1,130,189,true);
g.fill3DRect(35,1,130,189,true);
}
}
//自定义的监听者类监听各个按钮的动作并处理相应事件
class MyActionListener implements ActionListener{
CalculatorApplet clr;
static long number,num1;
static char opr;
public MyActionListener(CalculatorApplet c1){
super();
clr=c1;
}
public void actionPerformed(ActionEvent e){
String screen;
Button eSrc=(Button)e.getSource();
String cmd=eSrc.getActionCommand().trim();
int i;
if(cmd.equals("CLR")){
clr.text.setText("0");
}else if("+".equals(cmd)||"-".equals(cmd)||"*".equals(cmd)){
clr.text.setText("0");
num1=number;
opr=cmd.charAt(0);
}else if("=".equals(cmd)){
int sign;
if(number<0){
sign=1;
}else{
sign=-1;
}
if(sign*num1>0){
sign=1;
}else{
sign=-1;
}
switch(opr){
case'+':
number=number+num1;
break;
case'*':
number=number*num1;
break;
case'-':
number=num1-number;
}
if(number>999999999||number<-999999999){
clr.text.setText("Overflow");
}else{
clr.text.setText(""+number+"");
}
opr=' ';
}else if((i=Integer.parseInt(cmd))>=0&&i<=9){
screen=clr.text.getText();
if(screen.length()<9){
if(screen.trim().equals("0")){
clr.text.setText(cmd);
}else{
clr.text.setText(screen+cmd);
}
number=Integer.parseInt(clr.text.getText());
}
}
}
}
评论0