【Java GUI 编程】Java 实现一个简易计算器

实现一个简单计算器

通过之前的学习,创建 Frame 对象,按钮,绑定事件监听,文本框监听,等功能,实现一个简单计算器

package JavaGUI;

import JavaSE.oop.Test;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @Title:
 * @Package
 * @Description: 实现一个简易计算器
 * @author: maze
 * @date 2020/10/18上午 1:05
 */
public class Test10Calc {
    public static void main(String[] args) {
        new Calculator();
    }
}
// 计算器类
class Calculator extends Frame{
    public Calculator(){
        //三个文本框,一个按钮,一个标签
        TextField textField1 = new TextField(10);
        TextField textField2 = new TextField(10);
        TextField textField3 = new TextField(20);
        Button button = new Button("=");
        button.addActionListener(new MyActionCalculator(textField1,textField2,textField3));

        Label label = new Label("+");
        // 布局
        setLayout(new FlowLayout());
        add(textField1);
        add(label);
        add(textField2);
        add(button);
        add(textField3);
        // 自适应大小,和可见性
        pack();
        setVisible(true);
    }
}
// 监听器类
class MyActionCalculator implements ActionListener{
    private TextField num1;
    private TextField num2;
    private TextField num3;
    // 获取三个变量
    public MyActionCalculator(TextField num1, TextField num2,TextField num3){
        this.num1 = num1;
        this.num2 = num2;
        this.num3 = num3;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        //获得加数和被加数
        int n1 = Integer.parseInt(num1.getText());
        int n2 = Integer.parseInt(num2.getText());
        // 将两个变量加法运算后,放入第三个框
        num3.setText(""+(n1+n2));
        // 清空前两个框
        num1.setText("");
        num2.setText("");
    }
}

运行后,如下图

在这里插入图片描述

代码优化,改为面向对象写法

package JavaGUI;

import JavaSE.oop.Test;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @Title:
 * @Package
 * @Description: 实现一个简易计算器
 * @author: maze
 * @date 2020/10/18上午 1:05
 */
public class Test10Calc {
    public static void main(String[] args) {
        new Calculator().loadFrame();
    }
}
// 计算器类
class Calculator extends Frame{
    // 属性
    TextField num1,num2,num3;
    // 方法
    public void loadFrame(){
        num1 = new TextField(10);
        num2 = new TextField(10);
        num3 = new TextField(20);
        Button button = new Button("=");
        Label label = new Label("+");
        button.addActionListener(new MyActionCalculator(this));
        // 布局
        setLayout(new FlowLayout());
        add(num1);
        add(label);
        add(num2);
        add(button);
        add(num3);
        // 自适应大小,和可见性
        pack();
        setVisible(true);

    }
}
// 监听器类
class MyActionCalculator implements ActionListener{
    // 获取计算器这个对象
    Calculator calculator = null;
    public MyActionCalculator(Calculator calculator){
        this.calculator = calculator;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // 获得加数和被加数
        // 将两个变量加法运算后,放入第三个框
        Integer n1 = Integer.parseInt(calculator.num1.getText());
        Integer n2 = Integer.parseInt(calculator.num2.getText());
        calculator.num3.setText(""+(n1+n2));
    }
}

使用内部类再次进行优化

public class Test10Calc {
    public static void main(String[] args) {
        new Calculator().loadFrame();
    }
}
// 计算器类
class Calculator extends Frame{
    // 属性
    TextField num1,num2,num3;
    // 方法
    public void loadFrame(){
        num1 = new TextField(10);
        num2 = new TextField(10);
        num3 = new TextField(20);
        Button button = new Button("=");
        Label label = new Label("+");
        button.addActionListener(new MyActionCalculator());
        // 布局
        setLayout(new FlowLayout());
        add(num1);
        add(label);
        add(num2);
        add(button);
        add(num3);
        // 自适应大小,和可见性
        pack();
        setVisible(true);
    }
    // 监听器类
    class MyActionCalculator implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            // 获得加数和被加数
            // 将两个变量加法运算后,放入第三个框
            Integer n1 = Integer.parseInt(num1.getText());
            Integer n2 = Integer.parseInt(num2.getText());
            num3.setText(""+(n1+n2));
        }
    }
}

这个计算器比较简单,但是需要深刻理解其中思想,从面向过程到面向对象,再到内部类的优化…

你可能感兴趣的:(学习篇,&,应用篇,---,服务器,Java,Java,实现一个简单计算器,GUI,计算器,java)