码迷,mamicode.com
首页 > 其他好文 > 详细

简单的计算器

时间:2015-05-10 15:31:04      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

本人的第一个小程序。

 

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

/**
 * A simple calculator program.
 *
 * @author Guure
 * @version 1.00 5/9/2015
 */

public class Calculator extends JFrame implements ActionListener {
    /**
     * This class help close the Window.
     *
     */

    private class WindowCloser extends WindowAdapter {
        public void windowClosing(WindowEvent we) {
            System.exit(0);
        }
    }

    JTextField display = new JTextField("0");
    JButton reset = new JButton("CE");
    private final String[] str = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", ".", "0", "=", "+"};
    JButton[] buttons = new JButton[str.length];

    public Calculator() {
        super("Calculator");

        JPanel panel1 = new JPanel(new BorderLayout());
        panel1.add("Center", display);
        panel1.add("East", reset);

        JPanel panel2 = new JPanel(new GridLayout(4, 4));
        int i;
        for(i = 0; i < str.length; i++) {
            buttons[i] = new JButton(str[i]);
            panel2.add(buttons[i]);
        }

        getContentPane().setLayout(new BorderLayout());
        getContentPane().add("North", panel1);
        getContentPane().add("Center", panel2);

        for(i = 0; i < str.length; i++) {
            buttons[i].addActionListener(this);
        }
        reset.addActionListener(this);
        display.addActionListener(this);

        addWindowListener(new WindowCloser());
        setSize(800, 800);
        setLocation(400, 200);
        setVisible(true);
        pack();
    }

    public void actionPerformed(ActionEvent e) {
        Object target = e.getSource();
        String label = e.getActionCommand();
        if(target == reset) {
            handleReset();
        } else if("0123456789.".indexOf(label) > 0) {
            handleNumber(label);
        } else {
            handleOperator(label);
        }
    }

    boolean isFirstDigit = true;
    double number = 0.0;
    String operator = "=";

    public void handleNumber(String key) {
        if(isFirstDigit) {
            display.setText(key);
            isFirstDigit = false;
        } else if((key.equals(".")) && (display.getText().indexOf(".") < 0)) {
            display.setText(display.getText() + ".");
        } else if(!key.equals(".")) {
            display.setText(display.getText() + key);
        }
    }

    public void handleReset() {
        display.setText("0");
        isFirstDigit = true;
        operator = "=";
    }

    public void handleOperator(String key) {
        if(operator.equals("+")) {
            number += Double.valueOf(display.getText());
        } else if(operator.equals("-")) {
            number -= Double.valueOf(display.getText());
        } else if(operator.equals("*")) {
            number *= Double.valueOf(display.getText());
        } else if(operator.equals("/")) {
            number /= Double.valueOf(display.getText());
        } else if(operator.equals("=")) {
            number = Double.valueOf(display.getText());
        }
        display.setText(String.valueOf(number));
        operator = key;
        isFirstDigit = true;
    }

    public static void main(String[] args) {
        new Calculator();
    }
}

 

简单的计算器

标签:

原文地址:http://www.cnblogs.com/iguure/p/4492232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!