import java.awt.*;import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.windowadapter;import java.awt.event.windowevent;
import javax.swing.jtextfield;import java.awt.color;
public class createframe{ frame f; jtextfield text,text2; button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17, b18,b19,b20,b21,b22,b23,b24,b25,b26,b27; double op1,op2,op2x,op3;//运算的三个数:op1,op2是运算数,op3是运算结果 char op=0,opx=0,opp=0;//运算操作符 boolean b=false;//我按过0键了,下次该按.了 boolean c=false;//按过运算符了,下次按数字时该清屏显示 boolean firstdeng=true;//第一次做=
double mjia=0;
public static void main(string[] args) { createframe cf=new createframe(); cf.createwindow(); } public void createwindow() { f = new frame("calculator"); f.setbackground(color.light_gray); // 增加关闭事件的监听器 this.shutwindow(f);
text=new jtextfield(); text.sethorizontalalignment(jtextfield.right); text.setsize(250,22); text.setlocation(5,25); text.seteditable(false); text.setbackground(color.white); text.settext("0."); text2=new jtextfield(); text2.sethorizontalalignment(jtextfield.center); text2.setsize(37,22); text2.setlocation(5,50); text2.seteditable(false); text2.settext(""); text2.setbackground(color.light_gray); b1 = new button("backspace"); b1.setsize(70,22); b1.setlocation(52,50); b2 = new button("ce"); b2.setsize(60,22); b2.setlocation(128,50); b3 = new button("c"); b3.setsize(60,22); b3.setlocation(194,50); b4 = new button("mc"); b4.setsize(37,22); b4.setlocation(5,75); b5 = new button("7"); b5.setsize(37,22); b5.setlocation(50,75); b6 = new button("8"); b6.setsize(37,22); b6.setlocation(93,75); b7 = new button("9"); b7.setsize(37,22); b7.setlocation(136,75); b8 = new button("/"); b8.setsize(37,22); b8.setlocation(179,75); b9 = new button("sqrt"); b9.setsize(37,22); b9.setlocation(218,75); b10 = new button("mr"); b10.setsize(37,22); b10.setlocation(5,100); b11 = new button("4"); b11.setsize(37,22); b11.setlocation(50,100); b12 = new button("5"); b12.setsize(37,22); b12.setlocation(93,100); b13 = new button("6"); b13.setsize(37,22); b13.setlocation(136,100); b14 = new button("*"); b14.setsize(37,22); b14.setlocation(179,100); b15 = new button("%"); b15.setsize(37,22); b15.setlocation(218,100); b16 = new button("ms"); b16.setsize(37,22); b16.setlocation(5,125); b17 = new button("1"); b17.setsize(37,22); b17.setlocation(50,125); b18 = new button("2"); b18.setsize(37,22); b18.setlocation(93,125); b19 = new button("3"); b19.setsize(37,22); b19.setlocation(136,125); b20 = new button("-"); b20.setsize(37,22); b20.setlocation(179,125); b21 = new button("1/x"); b21.setsize(37,22); b21.setlocation(218,125); b22 = new button("m+"); b22.setsize(37,22); b22.setlocation(5,150); b23 = new button("0"); b23.setsize(37,22); b23.setlocation(50,150); b24 = new button("+/-"); b24.setsize(37,22); b24.setlocation(93,150); b25 = new button("."); b25.setsize(37,22); b25.setlocation(136,150); b26 = new button("+"); b26.setsize(37,22); b26.setlocation(179,150); b27 = new button("="); b27.setsize(37,22); b27.setlocation(218,150); f.setlayout(null);
f.add(text); f.add(text2); b1.addactionlistener(new buttonhandler()); b2.addactionlistener(new buttonhandler()); b3.addactionlistener(new buttonhandler()); b4.addactionlistener(new buttonhandler()); b5.addactionlistener(new buttonhandler()); b6.addactionlistener(new buttonhandler()); b7.addactionlistener(new buttonhandler()); b8.addactionlistener(new buttonhandler()); b9.addactionlistener(new buttonhandler()); b10.addactionlistener(new buttonhandler()); b11.addactionlistener(new buttonhandler()); b12.addactionlistener(new buttonhandler()); b13.addactionlistener(new buttonhandler()); b14.addactionlistener(new buttonhandler()); b15.addactionlistener(new buttonhandler()); b16.addactionlistener(new buttonhandler()); b17.addactionlistener(new buttonhandler()); b18.addactionlistener(new buttonhandler()); b19.addactionlistener(new buttonhandler()); b20.addactionlistener(new buttonhandler()); b21.addactionlistener(new buttonhandler()); b22.addactionlistener(new buttonhandler()); b23.addactionlistener(new buttonhandler()); b24.addactionlistener(new buttonhandler()); b25.addactionlistener(new buttonhandler()); b26.addactionlistener(new buttonhandler()); b27.addactionlistener(new buttonhandler());
f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5); f.add(b6); f.add(b7); f.add(b8); f.add(b9); f.add(b10); f.add(b11); f.add(b12); f.add(b13); f.add(b14); f.add(b15); f.add(b16); f.add(b17); f.add(b18); f.add(b19); f.add(b20); f.add(b21); f.add(b22); f.add(b23); f.add(b24); f.add(b25); f.add(b26); f.add(b27); f.setresizable(false); f.setsize(260,180); //窗口居中显示 this.centershow(260,180,f); f.setvisible(true); } public void centershow(int x,int y,frame f) { //窗口居中显示 toolkit tk=toolkit.getdefaulttoolkit(); dimension d=tk.getscreensize(); int screenheight=d.height; int screenwidth=d.width; f.setlocation((screenwidth-x)/2,(screenheight-y)/2); } public void shutwindow(frame f) { //add a listener for the close event f.addwindowlistener(new windowadapter(){ public void windowclosing(windowevent evt) { // 退出程序 system.exit(0); } }); } public double getcurrentnum()//得到当前文本框内数字 { return 1; } //四则运算 public double calculatenow(double op1,char op,double op2) { double op1b=0.0; switch(op) { case +: op1b=op1+op2; break; case -: op1b=op1-op2; break; case *: op1b=op1*op2; break; case /: if(op2==0.0) op1b=op1; else op1b=op1/op2; break; case %: if(op2==0.0) op1b=op1; else op1b=op1%op2; break; case 0: op1b=op2; break; } return op1b; } class buttonhandler implements actionlistener { public void actionperformed(actionevent e) { system.out.println("buttons lable is :" + e.getactioncommand()+"||" +createframe.this.op1 +createframe.this.op +createframe.this.op2 +"=" +createframe.this.op3); string command=e.getactioncommand(); string currenttext=text.gettext(); if(currenttext.equals("函数输入无效.") || currenttext.equals("除数不能为零.")) { currenttext="0."; text.settext(currenttext); } if(command=="backspace") { if(currenttext.length()>1) currenttext=currenttext.substring(0,currenttext.length()-1); else if(currenttext.length()<=1) { currenttext="0."; } text.settext(currenttext); } if(command=="ce") { text.settext("0."); op2=0.0; //return; } if(command=="c") { text.settext("0."); op3=0.0; op1=0.0; op2=0.0; op2x=0.0; op=0; opx=0; opp=0; firstdeng=true; b=false; c=false; } if(command=="0") { if(text.gettext().equals("0.")) { text.settext("0."); b=true; } else text.settext(currenttext+"0"); } if(command=="1") { if(c) { c=false; text.settext("1"); return; } if((text.gettext().equals("0.") || text.gettext().equals("0")) & !b) text.settext("1"); else text.settext(currenttext+"1"); } if(command=="2") { if(c) { text.settext("2"); c=false; return; } if((text.gettext().equals("0.") || text.gettext().equals("0")) & !b) text.settext("2"); else text.settext(currenttext+"2"); //return; } if(command=="3") { if(c) { c=false; text.settext("3"); return; } if((text.gettext().equals("0.") || text.gettext().equals("0")) & !b) text.settext("3"); else text.settext(currenttext+"3"); //return; } if(command=="4") { if(c) { c=false; text.settext("4"); return; } if((text.gettext().equals("0.") || text.gettext().equals("0")) & !b) text.settext("4"); else text.settext(currenttext+"4"); //return; } if(command=="5") { if(c) { c=false; text.settext("5"); return; } if((text.gettext().equals("0.") || text.gettext().equals("0")) & !b) text.settext("5"); else text.settext(currenttext+"5"); //return; } if(command=="6") { if(c) { c=false; text.settext("6"); return; } if((text.gettext().equals("0.") || text.gettext().equals("0")) & !b) text.settext("6"); else text.settext(currenttext+"6"); //return; } if(command=="7") { if(c) { c=false; text.settext("7"); return; } if((text.gettext().equals("0.") || text.gettext().equals("0")) & !b) text.settext("7"); else text.settext(currenttext+"7"); //return; } if(command=="8") { if(c) { c=false; text.settext("8"); return; } if((text.gettext().equals("0.") || text.gettext().equals("0")) & !b) text.settext("8"); else text.settext(currenttext+"8"); //return; } if(command=="9") { if(c) { c=false; text.settext("9"); return; } if((text.gettext().equals("0.") || text.gettext().equals("0")) & !b) text.settext("9"); else text.settext(currenttext+"9"); } if(command=="/") { op2=double.valueof(text.gettext()).doublevalue(); if(opp!==) { op1=calculatenow(op1,op,op2); opp=/; } op=/; opx=/; text.settext(string.valueof(op1)); c=true; //b=false; firstdeng=true;
} if(command=="*") { op2=double.valueof(text.gettext()).doublevalue(); if(opp!==) { op1=calculatenow(op1,op,op2); opp=*; } op=*; opx=*; text.settext(string.valueof(op1)); c=true; firstdeng=true; } if(command=="-") { op2=double.valueof(text.gettext()).doublevalue(); if(opp!==) { op1=calculatenow(op1,op,op2); opp=-; } op=-; opx=-; text.settext(string.valueof(op1)); c=true; firstdeng=true; } if(command=="+") { op2=double.valueof(text.gettext()).doublevalue(); if(opp!==) { op1=calculatenow(op1,op,op2); opp=+; } op=+; opx=+; text.settext(string.valueof(op1)); c=true; firstdeng=true; } if(command==".") { if(text.gettext().indexof(.)>1) return; else if(text.gettext().indexof(.)==-1) { text.settext(currenttext+"."); b=true; } else if(text.gettext().indexof(.)==1) b=true; }
if(command=="+/-") { if(double.valueof(text.gettext()).doublevalue()!=0) { double d=-double.valueof(text.gettext()).doublevalue(); text.settext(string.valueof(d)); op2=d; op2x=d; } } if(command=="%") { op2=double.valueof(text.gettext()).doublevalue(); if(op1!=0 & op2!=0) { double temp=op1*op2; temp=temp/100; text.settext(string.valueof(temp)); } } if(command=="sqrt") { double in=double.valueof(text.gettext()).doublevalue(); if(in<0) text.settext("函数输入无效."); else { double sd=math.sqrt(in); text.settext(string.valueof(sd)); op2=sd; op2x=sd; }
} if(command=="1/x") { double in=double.valueof(text.gettext()).doublevalue(); if(in==0) text.settext("除数不能为零."); else { double sd=1/in; text.settext(string.valueof(sd)); op2=sd; op2x=sd; } } if(command=="=") { op2=double.valueof(text.gettext()).doublevalue(); system.out.println("=========="+op2); if(firstdeng) { op2x=op2; firstdeng=false; } op1=calculatenow(op1,op,op2x); opp==; text.settext(string.valueof(op1)); } if(command=="mc") { mjia=0; text2.settext(""); } if(command=="mr") { text.settext(string.valueof(mjia)); } if(command=="ms") { mjia=double.valueof(text.gettext()).doublevalue(); text2.settext("m"); } if(command=="m+") { mjia=mjia+double.valueof(text.gettext()).doublevalue(); } }
}}
