游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1456|回复: 0

用java写的计算器程序wxh zt

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2006-2-7 21:15:00 | 显示全部楼层 |阅读模式
来源: 作者: xxx
  
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备17032699号-3 )

GMT+8, 2026-1-23 09:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表