如何用JAVA实现计算器界面

 我来答
北京金楼世纪科技有限公司
2016-12-13 · 企业短信服务平台。
北京金楼世纪科技有限公司
阅信短信验证码平台是国内新兴智能云通信服务商,隶属于北京金楼世纪科技有限公司,是中国移动、中国联通、中国电信三大运营商的资深战略合作伙伴。
向TA提问
展开全部

一个简单的计算器功能, 代码不是我写的,其实网上有很多这种例子,我只是整理了一下

package com.zhidao20161213;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class JCalculator extends JFrame implements ActionListener {
    /**
     * 
     * Serial Version UID
     * 
     */

    private static final long serialVersionUID = -169068472193786457L;

    /**
     * 
     * This class help close the Window.
     * 
     * @author Singyuen Yip
     *
     * 
     * 
     */

    private class WindowCloser extends WindowAdapter {

        public void windowClosing(WindowEvent we) {

            System.exit(0);

        }

    }

    int i;

    // Strings for Digit & Operator buttons.

    private final String[] str = { "7", "8", "9", "/", "4", "5", "6", "*", "1",

            "2", "3", "-", ".", "0", "=", "+" };

    // Build buttons.

    JButton[] buttons = new JButton[str.length];

    // For cancel or reset.

    JButton reset = new JButton("CE");

    // Build the text field to show the result.

    JTextField display = new JTextField("0");

    /**
     * 
     * Constructor without parameters.
     * 
     */

    public JCalculator() {

        super("计算器");

        // Add a panel.

        JPanel panel1 = new JPanel(new GridLayout(4, 4));

        // panel1.setLayout(new GridLayout(4,4));

        for (i = 0; i < str.length; i++) {

            buttons[i] = new JButton(str[i]);

            panel1.add(buttons[i]);

        }

        JPanel panel2 = new JPanel(new BorderLayout());

        // panel2.setLayout(new BorderLayout());

        panel2.add("Center", display);

        panel2.add("East", reset);

        // JPanel panel3 = new Panel();

        getContentPane().setLayout(new BorderLayout());

        getContentPane().add("North", panel2);

        getContentPane().add("Center", panel1);

        // Add action listener for each digit & operator button.

        for (i = 0; i < str.length; i++)

            buttons[i].addActionListener(this);

        // Add listener for "reset" button.

        reset.addActionListener(this);

        // Add listener for "display" button.

        display.addActionListener(this);

        // The "close" button "X".

        addWindowListener(new WindowCloser());

        // Initialize the window size.

        setSize(800, 800);

        // Show the window.

        // show(); Using show() while JDK version is below 1.5.

        setVisible(true);

        // Fit the certain size.

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

    }

    // Is the first digit pressed?

    boolean isFirstDigit = true;

    /**
     * 
     * Number handling.
     * 
     * @param key
     *            the key of the button.
     * 
     */

    public void handleNumber(String key) {

        if (isFirstDigit)

            display.setText(key);

        else if ((key.equals(".")) && (display.getText().indexOf(".") < 0))

            display.setText(display.getText() + ".");

        else if (!key.equals("."))

            display.setText(display.getText() + key);

        isFirstDigit = false;

    }

    /**
     * 
     * Reset the calculator.
     * 
     */

    public void handleReset() {

        display.setText("0");

        isFirstDigit = true;

        operator = "=";

    }

    double number = 0.0;

    String operator = "=";

    /**
     * 
     * Handling the operation.
     * 
     * @param key
     *            pressed operator's key.
     * 
     */

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

    }
}
匿名用户
2016-12-13
展开全部
我知道web html的,但是你说这个的话我不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式