网站首页

家园论坛

老版论坛

家园博客

业界新闻

技术文档

下载中心

速查中心

图片中心

硬件资讯
上一篇:通过Java Swing看透MVC设计模式 下一篇:用java写的贪吃蛇游戏
用java写的计算器程序

来源: 作者: 添加日期:2005-11-14 17:01:52 点击次数:
 

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);


   }


}

 
设为首页 | 加入收藏 | 业务办理 | 友情链接 | 论坛版面 | 浙ICP备07502118号 |