一个精简的计算器源码

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值