Java的事件驱动入门(三)——完成一个简单的计算器。

效果

在这里插入图片描述

代码

package Test;

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

public class calculator extends JFrame {
    private JButton jbtNumber0=new JButton("0");
    private JButton jbtNumber1=new JButton("1");
    private JButton jbtNumber2=new JButton("2");
    private JButton jbtNumber3=new JButton("3");
    private JButton jbtNumber4=new JButton("4");
    private JButton jbtNumber5=new JButton("5");
    private JButton jbtNumber6=new JButton("6");
    private JButton jbtNumber7=new JButton("7");
    private JButton jbtNumber8=new JButton("8");
    private JButton jbtNumber9=new JButton("9");
    private JButton jbtAdd=new JButton("+");
    private JButton jbtEqual=new JButton("=");
    private JButton jbtMinus=new JButton("-");
    private JButton jbtMultiply=new JButton("x");
    private JButton jbtDiv=new JButton("÷");
    private JButton jbtReset=new JButton("复位");
    private JLabel label1=new JLabel("请输入数据");
    private double add;
    private double added;
    private double total;
    private boolean flagAdd;
    private boolean flagMinus;
    private boolean flagMultiply;
    private boolean flagDiv;
    private boolean flagEqual;
    private JButton[] jbt={jbtNumber0,jbtNumber1,jbtNumber2,jbtNumber3,jbtNumber4,jbtNumber5,jbtNumber6,
    jbtNumber7,jbtNumber8,jbtNumber9};
    private JButton[] jbt2={jbtAdd,jbtMinus,jbtMultiply,jbtDiv};
    private String[] jbt3={"+","-","x","÷"};
    //private Boolean[] flag={flagAdd,flagMinus,flagMultiply,flagDiv,flagEqual};



    public calculator(){
            JPanel panel=new JPanel();
            ButtonListener listener=new ButtonListener();
            for (int i = 0; i < jbt.length; i++) {
            jbt[i].addActionListener(listener);
            jbtEqual.addActionListener(listener);
            jbtReset.addActionListener(listener);
            panel.add(jbt[i]);
        }
        for (int i = 0; i <jbt2.length ; i++) {
            jbt2[i].addActionListener(listener);
            panel.add(jbt2[i]);
        }
        panel.add(jbtEqual);
        panel.add(jbtReset);
        add(label1,BorderLayout.NORTH);
            add(jbtReset,BorderLayout.SOUTH);
        add(panel);
    }
    class ButtonListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {

            for (int i = 0; i <jbt.length; i++) {
                if(e.getSource()==jbt[i]){
                    added=i;
                    if (!flagAdd&!flagMinus&!flagMultiply&!flagDiv){
                        System.out.println(i);
                        add=i;
                        label1.setText(""+add);
                    }
                    if(flagAdd){
                        label1.setText(add+"+"+added);
                    }
                    else if(flagMinus){
                        label1.setText(add+"-"+added);
                    }
                    else if(flagMultiply){
                        label1.setText(add+"x"+added);
                    }
                    else if(flagDiv){
                        label1.setText(add+"÷"+added);
                    }
                    break;
                }
            }

            if(e.getSource()==jbtEqual){
                System.out.println("233");
                if(flagAdd){
                    total=add+added;
                }
                else if(flagMinus){
                    total=add-added;
                }
                else if(flagMultiply){
                    total=add*added;
                }
                else if(flagDiv){
                    total=add/added;
                }
                label1.setText(""+total);
            }
             else if(e.getSource()==jbtReset){
                add=0;
                added=0;
                flagAdd=false;
                flagMinus=false;
                flagMultiply=false;
                flagDiv=false;
                label1.setText("请输入数据:");
            }
             else if(e.getSource()==jbtAdd){
                 flagAdd=true;
                 label1.setText(add+"+");
            }
            else if(e.getSource()==jbtMinus){
                flagMinus=true;
                label1.setText(add+"-");
            }
            else if(e.getSource()==jbtMultiply){
                flagMultiply=true;
                label1.setText(add+"x");
            }
            else if(e.getSource()==jbtDiv){
                flagDiv=true;
                label1.setText(add+"÷");
            }

        }
    }


    public static void main(String[] args) {
        calculator frame=new calculator();
        frame.setTitle("Calculator");
        frame.setSize(400,200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值