num1=i*num1;
}
}
resultField.setText(String.valueOf(num1));
end=true;
}
elseif(e.getSource()==f3){//实现清零
resultField.setText("0");
}
elseif(e.getSource()==f4){//实现负号
if(resultField.getText()!
="0"){
resultField.setText("-"+resultField.getText());
}
}
elseif(e.getSource()==f5){//实现退格
inti;
i=(resultField.getText()).length();
if(i==1){
resultField.setText("0");
}
else{str=resultField.getText();
resultField.setText(str.substring(0,i-1));
}
}
}
五、程序设计
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclasstest1extendsJFrameimplementsActionListener{
//JFramejframe1;
JPaneljPanel1,jPanel2;
JTextFieldresultField;
JButton
s1,s2,s3,s4,s5,s6,s7,s8,s9,s0,b1,b2,b3,b4,b5,b6,b7,b8,b9,f1,f2,f3,f4,f5;privatebooleanend,add,sub,mul,div,evo,chf,per,rec,pur;
privateStringstr;
privatedoublenum1,num2;
publictest1(){
super("简易计算器");
setSize(300,260);
this.setLayout(newBorderLayout());
jPanel1=newJPanel();
jPanel1.setLayout(newGridLayout(1,1));//一行一列的布局
jPanel2=newJPanel();
jPanel2.setLayout(newGridLayout(6,4));//四行五列的布局
resultField=newJTextField("0");
jPanel1.add(resultField);
this.add(jPanel1,BorderLayout.NORTH);
s1=newJButton("1");s1.addActionListener(this);
s2=newJButton("2");s2.addActionListener(this);
s3=newJButton("3");s3.addActionListener(this);
s4=newJButton("4");s4.addActionListener(this);
s5=newJButton("5");s5.addActionListener(this);
s6=newJButton("6");s6.addActionListener(this);
s7=newJButton("7");s7.addActionListener(this);
s8=newJButton("8");s8.addActionListener(this);
s9=newJButton("9");s9.addActionListener(this);
s0=newJButton("0");s0.addActionListener(this);
b1=newJButton("+");b1.addActionListener(this);
b2=newJButton("-");b2.addActionListener(this);
b3=newJButton("*");b3.addActionListener(this);
b4=newJButton("/");b4.addActionListener(this);
b5=newJButton("^");b5.addActionListener(this);
b6=newJButton("开方");b6.addActionListener(this);
b7=newJButton("%");b7.addActionListener(this);
b8=newJButton("x!
");b8.addActionListener(this);
b9=newJButton("1/x");b9.addActionListener(this);
f1=newJButton(".");f1.addActionListener(this);
f2=newJButton("=");f2.addActionListener(this);
f3=newJButton("C");f3.addActionListener(this);
f4=newJButton("负");f4.addActionListener(this);
f5=newJButton("退格");f5.addActionListener(this);
jPanel2.add(f3);
jPanel2.add(b4);
jPanel2.add(b3);
jPanel2.add(f5);
jPanel2.add(s7);
jPanel2.add(s8);
jPanel2.add(s9);
jPanel2.add(b1);
jPanel2.add(s4);
jPanel2.add(s5);
jPanel2.add(s6);
jPanel2.add(b2);
jPanel2.add(s1);
jPanel2.add(s2);
jPanel2.add(s3);
jPanel2.add(b5);
jPanel2.add(s0);
jPanel2.add(f1);
jPanel2.add(f4);
jPanel2.add(b6);
jPanel2.add(b7);
jPanel2.add(b8);
jPanel2.add(b9);
jPanel2.add(f2);
this.add(jPanel2,BorderLayout.CENTER);
}
publicvoidnum(inti){
Strings=null;
s=String.valueOf(i);//返回整数i的字符串表示形式
if(end){//如果数字输入结束,则将文本框置零,重新输入
resultField.setText("0");
end=false;
}
if((resultField.getText()).equals("0")){
//如果文本框的内容为零,则覆盖文本框的内容
resultField.setText(s);
}
else{//如果文本框的内容不为零,则在内容后面添加数字
str=resultField.getText()+s;
resultField.setText(str);
}
}
publicvoidactionPerformed(ActionEvente)throwsArithmeticException{
//数字事件
if(e.getSource()==s1)
num
(1);
elseif(e.getSource()==s2)
num
(2);
elseif(e.getSource()==s3)
num(3);
elseif(e.getSource()==s4)
num(4);
elseif(e.getSource()==s5)
num(5);
elseif(e.getSource()==s6)
num(6);
elseif(e.getSource()==s7)
num(7);
elseif(e.getSource()==s8)
num(8);
elseif(e.getSource()==s9)
num(9);
elseif(e.getSource()==s0)
num(0);
//符号事件
elseif(e.getSource()==b1)
sign
(1);
elseif(e.getSource()==b2)
sign
(2);
elseif(e.getSource()==b3)
sign(3);
elseif(e.getSource()==b4)
sign(4);
elseif(e.getSource()==b5)
sign(5);
elseif(e.getSource()==b6)
sign(6);
elseif(e.getSource()==b7)
sign(7);
elseif(e.getSource()==b8)
sign(8);
elseif(e.getSource()==b9)
sign(9);
elseif(e.getSource()==f1){//实现"."
str=resultField.getText();
if(str.indexOf(".")<=1){
str+=".";
resultField.setText(str);
}
}
elseif(e.getSource()==f2){//实现"="
num2=Double.parseDouble(resultField.getText());
if(add){//加法
num1=num1+num2;
}
elseif(sub){//减法
num1=num1-num2;
}
elseif(mul){//乘法
num1=num1*num2;
}
elseif(div){//除法
if(num2==0)thrownewArithmeticException("除数不能为零");
else
num1=num1/num2;
}
elseif(chf){//乘方
if(num2==0)num1=1;
else
num1=Math.pow(num1,num2);
}
elseif(evo){//开方
if(num2<0)thrownewArithmeticException("被开方数不能小于零");
elsenum1=Math.sqrt(num2);
}
elseif(rec){//倒数
if(num2<0)thrownewArithmeticException("分母不能小于零");
elsenum1=1/num2;
}
elseif(per){//百分
num1=num1/100.0;
}
elseif(pur){//阶乘
if(num2<0)thrownewArithmeticException("负数不能求阶乘");
elsefor(inti=1;inum1=i*num1;
}
}
resultField.setText(String.valueOf(num1));
end=true;
}
elseif(e.getSource()==f3){//实现清零
resultField.setText("0");
}
elseif(e.getSource()==f4){//实现负号
if(resultField.getText()!
="0"){
resultField.setText("-"+resultField.getText());
}
}
elseif(e.getSource()==f5){//实现退格
inti;
i=(resultField.getText()).length();
if(i==1){
resultField.setText("0");
}
else{str=resultField.getText();
resultField.setText(str.substring(0,i-1));
}
}
}
p