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

    }
}
发布了100 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43576028/article/details/101462215
今日推荐