一个精简的计算器源码

来源:互联网 发布:avi视频下载软件 编辑:程序博客网 时间:2024/05/29 03:15

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Counter extends JFrame implements ActionListener{
    
    private JButton numBu[]=new JButton[11];
    private JButton mathBu[]=new JButton[4];
    private JButton Bu1=new JButton("=");
    private String str[]={"+","-","*","/"};
    private JPanel pan=new JPanel();
    private JTextField tf=new JTextField();
    
    private double startNum,endNum;
    private boolean isAdd,isDelet,isChen,isChu=false ;
    private boolean isEnd =true;
   
    public Counter() {
        super("计算器模拟");
        setSize(400,300);
        Container c=getContentPane(); 
        c.setLayout(new BorderLayout());
       
        tf.setHorizontalAlignment(JTextField.RIGHT);
        tf.setForeground(Color.blue);
        tf.setFont(new Font("TimesRoman",Font.BOLD,30));
        tf.setBackground(Color.pink);tf.setEditable(false);
        c.add(tf,"North");
        
        for(int n=0;n<10;n++){
            numBu[n]=new JButton(n+"");
            numBu[n].setBackground(Color.green);
            numBu[n].addActionListener(this);
        }
        numBu[10]=new JButton(".");
        Bu1.setBackground(Color.green);
        numBu[10].setBackground(Color.green);
        numBu[10].addActionListener(this);
        for(int n=0;n<4;n++){
            mathBu[n]=new JButton(str[n]);
            mathBu[n].setBackground(Color.green);
            mathBu[n].addActionListener(this);
                          }
        pan.setLayout(new GridLayout(4,4));
       for(int n=0;n<4;n++){
          if(n!=3) 
              for(int i=1;i<=3;i++) pan.add(numBu[3*n+i]);  
          else { 
              pan.add(numBu[0]);  pan.add(numBu[10]);  pan.add(Bu1); }
          pan.add(mathBu[n]);
                                 }
    Bu1.addActionListener(this);
        c.add(pan,"Center");
        show();
    }
    
   
    public static void main(String[] args) {
       Counter c=new Counter();
       
    }
   private String s=null; 
    public void actionPerformed(ActionEvent e) {
 
 //给 数字 按纽添加事件处理   
     for(int n=0;n<11;n++){ 
      if(e.getSource()==numBu[n]){
         //判断是否继续在屏幕输入
    if(isEnd){
               tf.setText("空格");
               isEnd =false;    }
             
        s=tf.getText();
       
        if(s.equals("空格"))
                   tf.setText(e.getActionCommand());
        else{
            s=s + e.getActionCommand();
            tf.setText(s);
         
                    }
                       }
                           }
    
      //给 运算 按纽添加事件处理      
      if(e.getSource()==mathBu[0]){
          startNum=Double.valueOf(tf.getText()).doubleValue();
          isEnd=true;isAdd=true;}
      if(e.getSource()==mathBu[1]){
            startNum=Double.valueOf(tf.getText()).doubleValue()*(-1);
          isEnd=true;isDelet=true;}
      if(e.getSource()==mathBu[2]){  
          startNum=Double.valueOf(tf.getText()).doubleValue();
          isEnd=true;isChen=true;}
      if(e.getSource()==mathBu[3]){
            startNum=Double.valueOf(tf.getText()).doubleValue();
         isEnd=true;isChu=true;}
 
     
     //给 等号 按纽添加事件处理   
    if(e.getSource()==Bu1){ 
        endNum=Double.valueOf(tf.getText()).doubleValue();
         if(isAdd){
             tf.setText((startNum+endNum)+"");
             isAdd=false;isEnd=true;
         }
         if(isDelet){
             tf.setText((startNum-endNum)+"");isDelet=false;isEnd=true;
         }
         if(isChen){
             tf.setText((startNum*endNum)+"");isChen=false;isEnd=true;
         }
         if(isChu&&endNum!=0){
             tf.setText((startNum/endNum)+"");isChu=false;isEnd=true;
         }
    }
        
}
}
--------------------------------------------------------------