简易粉红计算器

简易粉红计算器

package shixun.zuizhong;

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

public class Calculator {
    static int status = 0;  //状态
    static Double num1,num2; //num1 前一次 num2 后一次
    static String fuhao;
    static int num_fu = 0;
    static int spo_status = 0,spo_count=1; //点 的状态 点后数字个数

    public static void main(String[] args) {
        //窗口
        JFrame jFrame = new JFrame("简单计算器");
        jFrame.setSize(500,600);
        jFrame.setVisible(true);

        //创建按钮0-9
        JButton[] jButtons = new JButton[10];
        int index=0;
        for (int i = 0; i <=9; i++) {
            jButtons[i] = new JButton(i+"");
            jButtons[i].setBackground(Color.pink);
        }

        //创建按钮 加减乘除 小数点 等于
        JButton add_btn = new JButton("+");add_btn.setBackground(Color.pink);
        JButton sub_btn = new JButton("-");sub_btn.setBackground(Color.pink);
        JButton mul_btn = new JButton("X");mul_btn.setBackground(Color.pink);
        JButton div_btn = new JButton("/");div_btn.setBackground(Color.pink);
        JButton poi_btn = new JButton(".");poi_btn.setBackground(Color.pink);
        JButton equ_btn = new JButton("=");equ_btn.setBackground(Color.pink);

        //内容面板 放按钮
        JPanel jPanel = new JPanel();jPanel.setBackground(Color.pink);
        jPanel.setLayout(new GridLayout(4,4,15,15));
        index=1;
        while (index<=9){
            jPanel.add(jButtons[index]);
            switch (index){
                case 3:jPanel.add(add_btn);break;
                case 6:jPanel.add(sub_btn);break;
                case 9:jPanel.add(mul_btn);break;
            }
            index++;
        }
        jPanel.add(poi_btn);
        jPanel.add(jButtons[0]);
        jPanel.add(div_btn);
        jPanel.add(equ_btn);

        //内容面板2
        JPanel jPanel1 = new JPanel();jPanel1.setBackground(Color.pink);

        JButton clean_btn = new JButton("清空");clean_btn.setBackground(Color.pink);
        JTextArea jTextArea = new JTextArea("0", 5, 30);jTextArea.setBackground(Color.pink);
        jPanel1.add(jTextArea);
        jPanel1.add(clean_btn);

        //添加到jframe
        jFrame.add("North",jPanel1);
        jFrame.add(jPanel);

        //关闭同时推出程序
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //事件
        //清空事件
        ActionListener actionListener_clear = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jTextArea.setText("0");
                status = 0;
                num_fu = 0;
                spo_status = 0;
                spo_count = 1;
            }
        };

        //数字事件
        ActionListener actionListener_num = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JButton jtext =(JButton)e.getSource();
                if(spo_status == 1){
                    spo_count*=10;
                }
                if (num_fu==0){
                    if (status == 0){
                        num1 = Double.parseDouble(jtext.getText());
                        num1 /= spo_count;
                        status = 1;
                        jTextArea.setText(String.valueOf(num1));
                    }else {
                        num1=num1*10+Double.parseDouble(jtext.getText());
                        num1 /= spo_count;
                        jTextArea.setText(String.valueOf(num1));
                    }
                }else{
                    if (status == 0){
                        num2 = Double.parseDouble(jtext.getText());
                        num2 /= spo_count;
                        status = 1;
                        jTextArea.setText(String.valueOf(num2));
                    }else {
                        num2=num2*10+Double.parseDouble(jtext.getText());
                        num2 /= spo_count;
                        jTextArea.setText(String.valueOf(num2));
                    }
                }
            }
        };

        //符号事件
        ActionListener actionListener_fuhao = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JButton jtext =(JButton)e.getSource();
                String text = jtext.getText();
                fuhao = text;
                status = 0;
                num_fu = 1;
                spo_status = 0;
                spo_count = 1;
                jTextArea.setText(text);
            }
        };

        //计算
        ActionListener actionListener_cal = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println(num1);
                System.out.println(num2);
                Double number=null;
                switch (fuhao){
                    case "+":number=num1+num2;break;
                    case "-":number=num1-num2;break;
                    case "X":number=num1*num2;break;
                    case "/":number=num1/num2;break;
                    default: jTextArea.setText("0");
                };
                System.out.println(number);
                jTextArea.setText(String.valueOf(number));
                status = 0;
                spo_status = 0;
                spo_count = 1;
            }
        };

        //小数点状态
        ActionListener actionListener_spo = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                spo_status = 1;
            }
        };

        //注册数字
        index=0;
        while (index<=9){
            jButtons[index].addActionListener(actionListener_num);
            index++;
        }
        //注册符号
        add_btn.addActionListener(actionListener_fuhao);
        sub_btn.addActionListener(actionListener_fuhao);
        mul_btn.addActionListener(actionListener_fuhao);
        div_btn.addActionListener(actionListener_fuhao);

        //注册等于
        equ_btn.addActionListener(actionListener_cal);

        //注册清空
        clean_btn.addActionListener(actionListener_clear);

        //主次小数点
        poi_btn.addActionListener(actionListener_spo);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值