GUI设计一个加法计算器

前言:

管中窥豹—其余运算同理可设计

作品展示:

在这里插入图片描述
在这里插入图片描述

代码区:(面向过程写法)

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//开始
public class TestCounter {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();
    }
}

//计算器类
class Calculator extends Frame {
    public Calculator() {

        //三个文本框
        TextField a1 = new TextField(10);//最大计算输入字符数
        TextField a2 = new TextField(10);
        TextField a3 = new TextField(20);
        // 一个按钮
        Button button = new Button("=");
        button.setBackground(new Color(224, 226, 82));
        // 一个‘+’标签
        Label label = new Label("+");
        label.setBackground(new Color(231, 167, 71));
        Label label02 = new Label("get sum");
        //布局--流式布局
        setLayout(new FlowLayout(FlowLayout.LEFT));
        add(a1);
        add(label);
        add(a2);
        add(button);
        add(a3);
        add(label02);
        setVisible(true);
        //给按钮一个监听器
        button.addActionListener(new Mylistener(a1, a2, a3));

        //设置大小
        setBounds(200, 200, 600, 400);
        //背景颜色
        setBackground(Color.lightGray);

        addWindowListener(new WindowAdapter() {//创建一个适配器
            //窗口点击关闭的时候需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
                //结束程序
                System.exit(0);
            }
        });
    }
}

//监听器类
class Mylistener implements ActionListener {
    TextField num1, num2, num3;

    //定义三个变量
    public Mylistener(TextField num1, TextField num2, TextField num3) {
        this.num1 = num1;
        this.num2 = num2;
        this.num3 = num3;
        // if(num1.equals("")&&num2.equals(""))
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //获得加数和被加数
        int a1 = Integer.parseInt(num1.getText());
        int a2 = Integer.parseInt(num2.getText());
        //运算并放入第三个框
        int sum = a1 + a2;
        num3.setText(sum + "");
        //清除文本框
        num1.setText("");
        num2.setText("");
    }
}

优化!——使用组合类(半个面向对象)

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//开始
public class TestCounter {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();
    }
}

//计算器类
class Calculator extends Frame {
    TextField num1, num2, num3;
    public Calculator() {
        //三个文本框
        num1 = new TextField(10);//最大计算输入字符数
        num2 = new TextField(10);
        num3 = new TextField(20);
        // 一个按钮
        Button button = new Button("=");
        button.setBackground(new Color(224, 226, 82));
        // 一个‘+’标签
        Label label = new Label("+");
        label.setBackground(new Color(231, 167, 71));
        Label label02 = new Label("get sum");
        //布局--流式布局
        setLayout(new FlowLayout(FlowLayout.LEFT));
        add(num1);
        add(label);
        add(num2);
        add(button);
        add(num3);
        add(label02);
        setVisible(true);
        //给按钮一个监听器
        button.addActionListener(new Mylistener(this));
        //设置大小
        setBounds(200, 200, 600, 400);
        //背景颜色
        setBackground(Color.lightGray);

        addWindowListener(new WindowAdapter() {//创建一个适配器
            //窗口点击关闭的时候需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
                //结束程序
                System.exit(0);
            }
        });
    }
}

//监听器类
class Mylistener implements ActionListener {
    Calculator calculator = null;
    //定义三个变量
    public Mylistener(Calculator calculator) {
        this.calculator = calculator;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //获得加数和被加数
        // 运算并放入第三个框
        // 清除文本框
        int a1 = Integer.parseInt(calculator.num1.getText());
        int a2 = Integer.parseInt(calculator.num2.getText());
        calculator.num3.setText((a1 + a2) + "");
        calculator.num1.setText("");
        calculator.num2.setText("");
    }
}

再优化!——内部类(面向对象,更好的包装)

在这里插入图片描述
在这里插入图片描述

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//开始
public class TestCounter {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();
    }
}

//计算器类
class Calculator extends Frame {
    TextField num1, num2, num3;
    public Calculator() {
        //三个文本框
        num1 = new TextField(10);//最大计算输入字符数
        num2 = new TextField(10);
        num3 = new TextField(20);
        // 一个按钮
        Button button = new Button("=");
        button.setBackground(new Color(224, 226, 82));
        // 一个‘+’标签
        Label label = new Label("+");
        label.setBackground(new Color(231, 167, 71));
        Label label02 = new Label("get sum");
        //布局--流式布局
        setLayout(new FlowLayout(FlowLayout.LEFT));
        add(num1);
        add(label);
        add(num2);
        add(button);
        add(num3);
        add(label02);
        setVisible(true);
        //给按钮一个监听器
        button.addActionListener(new Mylistener());
        //设置大小
        setBounds(200, 200, 600, 400);
        //背景颜色
        setBackground(Color.lightGray);

        addWindowListener(new WindowAdapter() {//创建一个适配器
            //窗口点击关闭的时候需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
                //结束程序
                System.exit(0);
            }
        });

    }
    //监听器内部类
    private class Mylistener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            int a1 = Integer.parseInt(num1.getText());
            int a2 = Integer.parseInt(num2.getText());
            //运算并放入第三个框
            int sum = a1 + a2;
            num3.setText(sum + "");
            //清除文本框
            num1.setText("");
            num2.setText("");
        }
    }
}


  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信计2102罗铠威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值