专栏首页Fdu弟中弟制作一个简易计算器

制作一个简易计算器


使用java的AWT包实现一个简易的计算器。

import java.awt.*;
import java.awt.event.*;

public class Calculator {
    private Frame frame;
    private Label label;
    private Panel panel;
    private Button button0,button1,button2,button3,button4,button5,button6,button7,button8,
            button9,buttonequ,buttondiv,buttondot,buttonmul,buttonsub,buttonadd;
    private ButtonHandler listener;

    public Calculator() {
        frame = new Frame("My Calculator");
        label = new Label("0", Label.RIGHT);
        panel = new Panel(new GridLayout(4, 4));
        button0 = new Button("0");
        button1 = new Button("1");
        button2 = new Button("2");
        button3 = new Button("3");
        button4 = new Button("4");
        button5 = new Button("5");
        button6 = new Button("6");
        button7 = new Button("7");
        button8 = new Button("8");
        button9 = new Button("9");
        buttonequ = new Button("=");
        buttondiv = new Button("/");
        buttondot = new Button(".");
        buttonmul = new Button("*");
        buttonsub = new Button("-");
        buttonadd = new Button("+");
        panel.add(button7);
        panel.add(button8);
        panel.add(button9);
        panel.add(buttonadd);
        panel.add(button4);
        panel.add(button5);
        panel.add(button6);
        panel.add(buttonsub);
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(buttonmul);
        panel.add(button0);
        panel.add(buttondot);
        panel.add(buttonequ);
        panel.add(buttondiv);
        frame.add(label, BorderLayout.NORTH);
        frame.add(panel, BorderLayout.CENTER);
        frame.pack();
        frame.setSize(300,300);
        frame.setVisible(true);

        listener = new ButtonHandler();

        //对按钮添加监听
        button0.addActionListener(listener);
        button1.addActionListener(listener);
        button2.addActionListener(listener);
        button3.addActionListener(listener);
        button4.addActionListener(listener);
        button5.addActionListener(listener);
        button6.addActionListener(listener);
        button7.addActionListener(listener);
        button8.addActionListener(listener);
        button9.addActionListener(listener);
        buttonadd.addActionListener(listener);
        buttonsub.addActionListener(listener);
        buttonmul.addActionListener(listener);
        buttondiv.addActionListener(listener);
        buttondot.addActionListener(listener);
        buttonequ.addActionListener(listener);

        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    class ButtonHandler implements ActionListener {
        int flag = 0; //存储运算符
        boolean equHappened = true;
        double arg1 = 0, arg2 = 0, result = 0;
        //@Override
        public void actionPerformed(ActionEvent e) {
            if(e.getSource() == buttonequ) {
                equHappened = true;
                if(flag==0) {
                    result = arg1 + arg2;
                }
                else if(flag==1) {
                    result = arg1 - arg2;
                }
                else if(flag==2) {
                    result = arg1 * arg2;
                }
                else {
                    result = arg1 / arg2;
                }
                label.setText(result+"");
            }
            else {
                if(equHappened == true) {
                    label.setText("");
                    equHappened = false;
                }

                if(e.getSource() == buttondot) {
                    label.setText("0.");
                }
                else if(e.getSource() == button0) {
                    label.setText(label.getText()+"0");
                    arg2 = Double.parseDouble(label.getText());
                }
                else if(e.getSource() == button1) {
                    label.setText(label.getText()+"1");
                    arg2 = Double.parseDouble(label.getText());
                }
                else if(e.getSource() == button2) {
                    label.setText(label.getText()+"2");
                    arg2 = Double.parseDouble(label.getText());
                }
                else if(e.getSource() == button3) {
                    label.setText(label.getText()+"3");
                    arg2 = Double.parseDouble(label.getText());
                }
                else if(e.getSource() == button4) {
                    label.setText(label.getText()+"4");
                    arg2 = Double.parseDouble(label.getText());
                }
                else if(e.getSource() == button5) {
                    label.setText(label.getText()+"5");
                    arg2 = Double.parseDouble(label.getText());
                }
                else if(e.getSource() == button6) {
                    label.setText(label.getText()+"6");
                    arg2 = Double.parseDouble(label.getText());
                }
                else if(e.getSource() == button7) {
                    label.setText(label.getText()+"7");
                    arg2 = Double.parseDouble(label.getText());
                }
                else if(e.getSource() == button8) {
                    label.setText(label.getText()+"8");
                    arg2 = Double.parseDouble(label.getText());
                }
                else if(e.getSource() == button9) {
                    label.setText(label.getText()+"9");
                    arg2 = Double.parseDouble(label.getText());
                }
                else if(e.getSource() == buttonadd) {
                    label.setText("");
                    arg1 = arg2;
                    flag = 0;
                }
                else if(e.getSource() == buttonsub) {
                    label.setText("");
                    arg1 = arg2;
                    flag = 1;
                }
                else if(e.getSource() == buttonmul) {
                    label.setText("");
                    arg1 = arg2;
                    flag = 2;
                }
                else if(e.getSource() == buttondiv) {
                    label.setText("");
                    arg1 = arg2;
                    flag = 3;
                }
            }
        }
    }

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

并不难,只用到了AWT,一个小时做完,感兴趣的可以用swing改写一下。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用c语言制作简易计算器

    学了c语言之后,总想着能用c语言能制作一些简单的小工具来。而利用c语言来制作一款简易的计算器是一个不错的选择,用这款计算器可以计算的加、减、乘、除。

    诸葛青云
  • 简易计算器

      该计算器实现了简单的加、减、乘、除、正负数的功能,以从左到右的顺序来运算。UI层通过Arithmetic来操作各种运算类,这些运算类都继承了Operator...

    ^_^肥仔John
  • 简易计算器

    C++简易计算器栈栈(Stack)的特点栈的相关概念栈的常用操作为栈的常见分类实例计算器概念代码实现测试

    DeROy
  • 制作一个PHP简易框架(二)-- 引入容器

    使用容器来管理服务包的依赖问题,避免在使用某个第三方包时由于依赖太多而造成项目的复杂度增大与难以管理的问题。

    caoayu
  • 制作一个PHP简易框架(一)--准备工作

    制作一个极简版的 php 框架。串联一下 web 开发中需要注意的核心关键点,从零开始构建一个完整的系统,通过创建系统框架的过程,理解 web 开发中做核心的内...

    caoayu
  • 制作一个PHP简易框架 (一) 准备工作

    制作一个极简版的 php 框架。串联一下 web 开发中需要注意的核心关键点,从零开始构建一个完整的系统,通过创建系统框架的过程,理解 web 开发中做核心的内...

    caoayu
  • 制作一个PHP简易框架(九)-- ORM

    项目地址:https://github.com/ayuayue/php-frame

    caoayu
  • 实现简易计算器

    DataScience
  • Python之简易计算器

    py3study

扫码关注云+社区

领取腾讯云代金券