zoukankan      html  css  js  c++  java
  • java 计算器

    简介

    java 计算器

    code

    /*
     * @Author: your name
     * @Date: 2020-10-31 14:47:11
     * @LastEditTime: 2020-10-31 17:05:14
     * @LastEditors: Please set LastEditors
     * @Description: In User Settings Edit
     * @FilePath: /java/calcu/calculatePanel.java
     */
    package calcu;
    
    import java.awt.*;
    import java.awt.event.*;
    
    import javax.swing.*;
    
    public class CalculatePanel extends JPanel {
        private JButton display;
        private JPanel panel;
        private double result;
        private String lastCommand;
        private boolean start;
    
        public static void main(String[] args) {
            EventQueue.invokeLater(() -> {
                JFrame m = new JFrame("第一个Java窗口");
                m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                m.getContentPane().add(new CalculatePanel());
                m.pack();
                m.setVisible(true);
            });
        }
    
        public CalculatePanel() {
            setLayout(new BorderLayout());
    
            result = 0;
            lastCommand = "=";
            start = true;
    
            // add the display
            display = new JButton("0");
            display.setEnabled(false);
            add(display, BorderLayout.NORTH);
    
            ActionListener insert = new InsertAction();
            ActionListener command = new CommandAction();
            // add the buttons in a 4 * 4 grid
    
            panel = new JPanel();
            panel.setLayout(new GridLayout(4, 4));
    
            addButton("7", insert);
            addButton("8", insert);
            addButton("9", insert);
            addButton("/", command);
    
            addButton("4", insert);
            addButton("5", insert);
            addButton("6", insert);
            addButton("*", command);
    
            addButton("1", insert);
            addButton("2", insert);
            addButton("3", insert);
            addButton("-", command);
    
            addButton("0", insert);
            addButton(".", insert);
            addButton("=", command);
            addButton("+", command);
    
            add(panel, BorderLayout.CENTER);
        }
    
        private void addButton(String label, ActionListener listener) {
            JButton button = new JButton(label);
            button.addActionListener(listener);
            panel.add(button);
        }
    
        private class InsertAction implements ActionListener {
            public void actionPerformed(ActionEvent event) {
                String input = event.getActionCommand();
                if (start) {
                    display.setText("");
                    start = false;
                }
                display.setText(display.getText() + input);
            }
        }
    
        private class CommandAction implements ActionListener {
            public void actionPerformed(ActionEvent event) {
                String command = event.getActionCommand();
    
                if (start) {
                    if (command.equals("-")) {
                        display.setText(command);
                        start = false;
                    } else {
                        lastCommand = command;
                    }
                } else {
                    calculate(Double.parseDouble(display.getText()));
                    lastCommand = command;
                    start = true;
                }
            }
        }
    
        public void calculate(double x) {
            if (lastCommand.equals("+"))
                result += x;
            else if (lastCommand.equals("-"))
                result -= x;
            else if (lastCommand.equals("*"))
                result *= x;
            else if (lastCommand.equals("/"))
                result /= x;
            else if (lastCommand.equals("="))
                result = x;
            display.setText("" + result);
        }
    }
    
    
    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    OKR实施方法——关于思路和流程的思考
    如何制作一份疫情场所分布地图?(附数据和源码)
    经纬度编码方法推荐-plus code简介
    快递到车服务的实现思路和问题思考
    ACC自适应巡航控制系统介绍
    《无人驾驶》-了解无人驾驶最佳读物
    手把手教你制作微信小程序,开源、免费、快速搞定
    2点GPS坐标求方位角
    GPRS 应用详解_GPRSsim800c(转)
    STM32的ADC采样与多通道ADC采样(转)
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/13906819.html
Copyright © 2011-2022 走看看