计算器源代码.docx
《计算器源代码.docx》由会员分享,可在线阅读,更多相关《计算器源代码.docx(10页珍藏版)》请在冰点文库上搜索。
计算器源代码
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
publicclassCalculateextendsJFrame{
privateStringfront="",behind="";//分别用于记录加减乘除运算符之前,之后输入的内容
privateStringop;//用于记录运算符
privateStringre;//用于存储运算结果的字符串格式
privatebooleanflag=false;//用于记录是否按下了运算符
privatebooleanflag1=false;//用于判断是否输入了点运算符
privatedoubleresult;//用于存储运算结果
privatebooleanflag2=false;//用于判断是否输入了数字
privatebooleanflag3=false;//用于判断是否按下了等号运算符
JPanelcontentPane;
JTextFieldtxtResult=newJTextField("0");
JButtonbtnNull=newJButton("sqrt");
JButtonbtnFour=newJButton("4");
JButtonbtnFive=newJButton("5");
JButtonbtnSix=newJButton("6");
JButtonbtnDecrease=newJButton("-");
JButtonbtnBegin=newJButton("C");
JButtonbtnOne=newJButton("1");
JButtonbtnTwo=newJButton("2");
JButtonbtnThree=newJButton("3");
JButtonbtnMultiply=newJButton("*");
JButtonbtnCancel=newJButton("←");
JButtonbtnZero=newJButton("0");
JButtonbtnMinus=newJButton("+/-");
JButtonbtnPoint=newJButton(".");
JButtonbtnDivide=newJButton("/");
JButtonbtnEqual=newJButton("=");
JButtonbtnIncrease=newJButton("+");
JButtonbtnSeven=newJButton("7");
JButtonbtnEight=newJButton("8");
JButtonbtnNine=newJButton("9");
publicCalculate(){
try{
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
}catch(Exceptionexception){
exception.printStackTrace();
}
}
privatevoidjbInit()throwsException{
contentPane=(JPanel)getContentPane();
contentPane.setLayout(null);
this.setResizable(false);
setSize(newDimension(400,300));
setTitle("计算器");
txtResult.setEnabled(false);
txtResult.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
txtResult.setEditable(false);
txtResult.setHorizontalAlignment(SwingConstants.RIGHT);
txtResult.setBounds(newRectangle(33,19,310,34));
btnNull.setBounds(newRectangle(298,70,46,37));
btnNull.setFont(newjava.awt.Font("Dialog",Font.PLAIN,12));
//btnNull.addActionListener(newFrameCalculate_btnNull_actionAdapter(this));
btnFour.setBounds(newRectangle(33,120,46,37));
btnFour.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnFive.setBounds(newRectangle(101,120,46,37));
btnFive.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnSix.setBounds(newRectangle(167,119,46,37));
btnSix.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnDecrease.setBounds(newRectangle(234,120,46,37));
btnDecrease.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnBegin.setBounds(newRectangle(298,121,46,37));
btnBegin.setFont(newjava.awt.Font("Dialog",Font.PLAIN,15));
btnBegin.addActionListener(newCalculate_btnBegin_actionAdapter(this));
btnOne.setBounds(newRectangle(33,172,46,37));
btnOne.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnTwo.setBounds(newRectangle(101,172,46,37));
btnTwo.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnThree.setBounds(newRectangle(167,172,46,37));
btnThree.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnMultiply.setBounds(newRectangle(234,172,46,37));
btnMultiply.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnCancel.setBounds(newRectangle(298,172,46,37));
btnCancel.setFont(newjava.awt.Font("Dialog",Font.PLAIN,12));
btnCancel.addActionListener(newCalculate_btnCancel_actionAdapter(this));
btnZero.setBounds(newRectangle(33,222,46,37));
btnZero.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
//加载数字0-9的监听事件
btnZero.addActionListener(newCalculate_btnZero_actionAdapter(this));
btnOne.addActionListener(newCalculate_btnZero_actionAdapter(this));
btnTwo.addActionListener(newCalculate_btnZero_actionAdapter(this));
btnThree.addActionListener(newCalculate_btnZero_actionAdapter(this));
btnFour.addActionListener(newCalculate_btnZero_actionAdapter(this));
btnFive.addActionListener(newCalculate_btnZero_actionAdapter(this));
btnSix.addActionListener(newCalculate_btnZero_actionAdapter(this));
btnSeven.addActionListener(newCalculate_btnZero_actionAdapter(this));
btnEight.addActionListener(newCalculate_btnZero_actionAdapter(this));
btnNine.addActionListener(newCalculate_btnZero_actionAdapter(this));
btnMinus.setBounds(newRectangle(101,222,46,37));
btnMinus.setFont(newjava.awt.Font("Dialog",Font.PLAIN,10));
btnMinus.addActionListener(newCalculate_btnMinus_actionAdapter(this));
btnPoint.setBounds(newRectangle(167,222,46,37));
btnPoint.setFont(newjava.awt.Font("Dialog",Font.PLAIN,30));
btnPoint.setHorizontalTextPosition(SwingConstants.CENTER);
btnPoint.addActionListener(newCalculate_btnPoint_actionAdapter(this));
btnDivide.setBounds(newRectangle(234,222,46,37));
btnDivide.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnEqual.setBounds(newRectangle(298,222,46,37));
btnEqual.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnEqual.addActionListener(newCalculate_btnEqual_actionAdapter(this));
btnIncrease.setBounds(newRectangle(234,70,46,37));
btnIncrease.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
//加载加减乘除运算符的监听事件
btnIncrease.addActionListener(new
Calculate_btnIncrease_actionAdapter(this));
btnDecrease.addActionListener(new
Calculate_btnIncrease_actionAdapter(this));
btnMultiply.addActionListener(new
Calculate_btnIncrease_actionAdapter(this));
btnDivide.addActionListener(new
Calculate_btnIncrease_actionAdapter(this));
btnSeven.setBounds(newRectangle(33,70,46,37));
btnSeven.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnEight.setBounds(newRectangle(101,70,46,37));
btnEight.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
btnNine.setBounds(newRectangle(167,70,46,37));
btnNine.setFont(newjava.awt.Font("Dialog",Font.PLAIN,20));
contentPane.add(btnFive);
contentPane.add(btnSix);
contentPane.add(btnDecrease);
contentPane.add(btnBegin);
contentPane.add(btnOne);
contentPane.add(btnTwo);
contentPane.add(btnThree);
contentPane.add(btnMultiply);
contentPane.add(btnCancel);
contentPane.add(btnMinus);
contentPane.add(btnPoint);
contentPane.add(btnDivide);
contentPane.add(btnEqual);
contentPane.add(btnEight);
contentPane.add(btnNine);
contentPane.add(btnFour);
contentPane.add(btnSeven);
contentPane.add(btnIncrease);
contentPane.add(btnNull);
contentPane.add(txtResult);
contentPane.add(btnZero);
}
publicvoidbtnZero_actionPerformed(ActionEvente){
if(flag){//如果刚刚按下了运算符
txtResult.setText("");
if(flag1){//判断之前是否输入了点运算符
txtResult.setText("0."+e.getActionCommand());
flag1=false;
}else{
txtResult.setText(e.getActionCommand());
}
flag2=true;
}else{
intnum=txtResult.getText().indexOf(".");
if(num<0&&!
txtResult.getText().equals("0")){
txtResult.setText(txtResult.getText()+e.getActionCommand());
}elseif(num<0&&txtResult.getText().equals("0")){
txtResult.setText(e.getActionCommand());
}elseif(num>=0&&txtResult.getText().equals("0")){
txtResult.setText("0."+e.getActionCommand());
}elseif(num>=0&&!
txtResult.getText().equals("0")){
txtResult.setText(txtResult.getText()+e.getActionCommand());
}
}
flag=false;
flag3=false;
}
publicvoidbtnIncrease_actionPerformed(ActionEvente){
if(flag3){
txtResult.setText(txtResult.getText());
op=e.getActionCommand();//得到刚刚按下的运算符
front=txtResult.getText();//记录加减乘除运算符之前输入的内容
}
elseif(flag2){
ActionEventee=newActionEvent("qq",1,"pp");
btnEqual_actionPerformed(ee);
op=e.getActionCommand();//得到刚刚按下的运算符
front=re;
flag2=false;
}else{
front=txtResult.getText();//记录加减乘除运算符之前输入的内容
op=e.getActionCommand();//得到刚刚按下的运算符
}
flag3=false;
flag=true;//记录已经按下了加减乘除运算符的其中一个
}
publicvoidbtnEqual_actionPerformed(ActionEvente){
if(!
flag3)//未曾按下等于运算符
behind=txtResult.getText();
else
front=re;
try{
doublea1=Double.parseDouble(front);
doubleb1=Double.parseDouble(behind);
if(op=="+"){
result=a1+b1;
}elseif(op=="-"){
result=a1-b1;
}elseif(op=="*"){
result=a1*b1;
}else{
result=a1/b1;
}
Doubler=newDouble(result);
re=r.toString(result);
txtResult.setText(re);
}catch(ArithmeticExceptionce){
txtResult.setText("除数不能为零");
}catch(Exceptionee){
}
if(!
flag3)
flag3=true;
}
publicvoidbtnPoint_actionPerformed(ActionEvente){
intnum=txtResult.getText().indexOf(".");
if(num<0&&!
flag)
txtResult.setText(txtResult.getText()+e.getActionCommand());
if(flag)
flag1=true;
}
publicvoidbtnBegin_actionPerformed(ActionEvente){//清零运算符事件处理
flag=false;
flag1=false;
flag2=false;
flag3=false;
front="";
behind="";
re="";
txtResult.setText("0");
}
publicvoidbtnMinus_actionPerformed(ActionEvente){//取反运算符事件处理
if(txtResult.getText().equals("0")){//如果文本框内容为0
txtResult.setText(txtResult.getText());
}elseif(txtResult.getText().indexOf("-")>=0){//若文本框中含有负号
Stringa=txtResult.getText().replaceAll("-","");
txtResult.setText(a);
}elseif(flag){
txtResult.setText("0");
}else{
txtResult.setText("-"+txtResult.getText());
}
}
publicvoidbtnCancel_actionPerformed(ActionEvente){//退格事件处理方法
Stringstr=txtResult.getText();
if(str.length()==1){//如文本框中只剩下最后一个字符,将文本框内容置为0
txtResult.setText("0");
}
if(str.length()>1){
str=str.substring(0,str.length()-1);
txtResult.setText(str);
}
}
publicstaticvoidmain(String[]args){
Calculatefc=newCalculate();
fc.setSize(400,310);
fc.setLocation(200,150);
fc.setVisible(true);
}
}
classCalculate_btnCancel_actionAdapterimplementsActionListener{
privateCalculateadaptee;
Calculate_btnCancel_actionAdapt