用java寫的計算器程序

 

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Calculator extends JFrame


{


 private Container container;


 private GridBagLayout layout;


 private GridBagConstraints constraints;


 private JTextField displayField;//計算結果顯示區


 private String lastCommand;//保存+,-,*,/,=命令


 private double result;//保存計算結果


 private boolean start;//判斷是否爲數字的開始


 
  public Calculator()


  {


  super("Calculator");


  container=getContentPane();


  layout=new GridBagLayout();


  container.setLayout(layout);


  constraints=new GridBagConstraints();
  
  start=true;


  result=0;


    lastCommand = "=";
  
  displayField=new JTextField(20);


  displayField.setHorizontalAlignment(JTextField.RIGHT);


  constraints.gridx=0;


  constraints.gridy=0;


  constraints.gridwidth=4;


  constraints.gridheight=1;


  constraints.fill=GridBagConstraints.BOTH;


  constraints.weightx=100;


  constraints.weighty=100;


  layout.setConstraints(displayField,constraints);


  container.add(displayField);
  
  ActionListener insert = new InsertAction();


    ActionListener command = new CommandAction();


    
  addButton("Backspace",0,1,2,1,insert);


  addButton("CE",2,1,1,1,insert);


  addButton("C",3,1,1,1,insert);
  
  addButton("7",0,2,1,1,insert);


  addButton("8",1,2,1,1,insert);


  addButton("9",2,2,1,1,insert);


  addButton("/",3,2,1,1,command);
  


  addButton("4",0,3,1,1,insert);


  addButton("5",1,3,1,1,insert);


  addButton("6",2,3,1,1,insert);


  addButton("*",3,3,1,1,command);
  


  addButton("1",0,4,1,1,insert);


  addButton("2",1,4,1,1,insert);


  addButton("3",2,4,1,1,insert);


  addButton("-",3,4,1,1,command);
  


  addButton("0",0,5,1,1,insert);


  addButton("+/-",1,5,1,1,insert);//只顯示"-"號,"+"沒有實用價值


  addButton(".",2,5,1,1,insert);


  addButton("+",3,5,1,1,command);
  


  addButton("=",0,6,4,1,command);
  


  setSize(300,300);


  setVisible(true);


  }


  private void addButton(String label,int row,int column,int with,int height,ActionListener listener)


  {


   JButton button=new JButton(label);


 
   constraints.gridx=row;


   constraints.gridy=column;
   


   constraints.gridwidth=with;


   constraints.gridheight=height;


   
    constraints.fill=GridBagConstraints.BOTH;


   
   button.addActionListener(listener);


   layout.setConstraints(button,constraints);


   container.add(button);


  }


  private class InsertAction implements ActionListener


    {


       public void actionPerformed(ActionEvent event)


       {


          String input=event.getActionCommand();


          if (start)


          {


             displayField.setText("");


             start=false;


             
             if(input.equals("+/-"))


             displayField.setText(displayField.getText()+"-");


          }


          if(!input.equals("+/-"))


          {


           if(input.equals("Backspace"))


           {


            String str=displayField.getText();


            if(str.length()>0)


              displayField.setText(str.substring(0,str.length()-1));


            }


           else if(input.equals("CE")||input.equals("C"))


           {


            displayField.setText("0");


            start=true;


           } 


           else


             displayField.setText(displayField.getText()+input);


         }


       }


    }


    private class CommandAction implements ActionListener


    {


       public void actionPerformed(ActionEvent evt)


       {


          String command=evt.getActionCommand();


          if(start)


          {


           lastCommand=command;


          }


          else


          {


          calculate(Double.parseDouble(displayField.getText()));


          lastCommand=command;


          start=true;


          }


         }


      }


   public void calculate(double x)


   {


      if (lastCommand.equals("+")) result+= x;    

  
      else if (lastCommand.equals("-")) result-=x;


      else if (lastCommand.equals("*")) result*=x;   

    
      else if (lastCommand.equals("/")) result/=x;


      else if (lastCommand.equals("=")) result=x;


       displayField.setText(""+ result);


    }


   public static void  main(String []args)


   {


     Calculator calculator=new Calculator();


     calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


   }


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章