Java GUI 简单计算器制作教程

一、目的:制作如图一个简单的计算器,点击 确认按钮 2 输出结果然后 1 框清空内容

在这里插入图片描述

二、思路:

一、实现面板样式

1.GirdLayout(2,1),上面填充north
2.north 使用网格布局 GridLayout (1,5)分为north1,north2…north5。south1,south3,south5为文本框TextField,south2,south4 为标签.
south 使用 网格布局 GridLayout(1,3) 分为south1,south,2,south3,
south1,south3 为空面板,south2 为按钮

package GUI.简单计算器;

import GUI.MyClass.MySystemExit;

import java.awt.*;

public class Demo {
    public static void main(String[] args) {
        new CalculatorFrame();
    }
}
class CalculatorFrame extends Frame {
    CalculatorFrame(){
        this.setName("简单计算器窗口");
        this.setLayout(new GridLayout(2,1,20,20));
        //一、
        Panel north = new Panel();
        Panel south = new Panel();
        this.add(north,new GridLayout(1,1));
        this.add(south,new GridLayout(2,1));
        north.setBackground(new Color(99, 255, 240));
        //二、
        north.setLayout(new GridLayout(1,5,5,5));

        TextField north1 = new TextField();
        Label north2 = new Label(" + ");
        TextField north3 = new TextField();
        Label north4 = new Label(" = ");
        TextField north5 = new TextField();
        north.add(north1,new GridLayout(1,1));
        north.add(north2,new GridLayout(1,2));
        north.add(north3,new GridLayout(1,3));
        north.add(north4,new GridLayout(1,4));
        north.add(north5,new GridLayout(1,5));


        south.setLayout(new GridLayout(1,3,5,5));
        Panel south1 = new Panel();
        Button south2 = new Button("confrim");
        Panel south3 = new Panel();
        south.add(south1,new GridLayout(1,1));
        south.add(south2,new GridLayout(1,2));
        south.add(south3,new GridLayout(1,3));
        
        //location size color
        this.setLocation(100,100);
        this.setSize(400,400);

        this.setVisible(true);
        new MySystemExit(this);
    }
}

样式

在这里插入图片描述

二、实现功能

1.给button添加监听,监听### 一、目的:制作如图一个简单的计算器,点击 确认按钮 2 输出结果然后 1 框清空内容
在这里插入图片描述### 二、思路:###### 一、实现面板样式1.GirdLayout(2,1),上面填充north2.north 使用网格布局 GridLayout (1,5)分为north1,north2…north5。south1,south3,south5为文本框TextField,south2,south4 为标签.south 使用 网格布局 GridLayout(1,3) 分为south1,south,2,south3,south1,south3 为空面板,south2 为按钮javapackage GUI.简单计算器;import GUI.MyClass.MySystemExit;import java.awt.*;public class Demo { public static void main(String[] args) { new CalculatorFrame(); }}class CalculatorFrame extends Frame { CalculatorFrame(){ this.setName("简单计算器窗口"); this.setLayout(new GridLayout(2,1,20,20)); //一、 Panel north = new Panel(); Panel south = new Panel(); this.add(north,new GridLayout(1,1)); this.add(south,new GridLayout(2,1)); north.setBackground(new Color(99, 255, 240)); //二、 north.setLayout(new GridLayout(1,5,5,5)); TextField north1 = new TextField(); Label north2 = new Label(" + "); TextField north3 = new TextField(); Label north4 = new Label(" = "); TextField north5 = new TextField(); north.add(north1,new GridLayout(1,1)); north.add(north2,new GridLayout(1,2)); north.add(north3,new GridLayout(1,3)); north.add(north4,new GridLayout(1,4)); north.add(north5,new GridLayout(1,5)); south.setLayout(new GridLayout(1,3,5,5)); Panel south1 = new Panel(); Button south2 = new Button("confrim"); Panel south3 = new Panel(); south.add(south1,new GridLayout(1,1)); south.add(south2,new GridLayout(1,2)); south.add(south3,new GridLayout(1,3)); //location size color this.setLocation(100,100); this.setSize(400,400); this.setVisible(true); new MySystemExit(this); }}### 样式在这里插入图片描述

二、实现功能

1.给button添加监听,监听类implements 实现接口 ActionListener.
2.监听类的Override函数,因该包括以下功能
2.1:获取 3个TextField 变量,使用构造器将 对象参数传进来。
2.2 :获取 x ,y ,中的值,并赋值z = x + y(使用一些语句提取值和赋值)
2.3:清空 x,y 的值。
2.4 :事件监听添加到 button中.

class MyCalculatorActionListener implements ActionListener {
    TextField x,y,z;
    MyCalculatorActionListener(TextField x,TextField y,TextField z){
        this.x = x;
        this.y = y;
        this.z = z;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        z.setText(Double.valueOf(x.getText())+Double.valueOf(y.getText())+"");
        x.setText("");
        y.setText("");
    }
}

总代码

package GUI.简单计算器;

import GUI.MyClass.MySystemExit;

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

public class Demo {
    public static void main(String[] args) {
        new CalculatorFrame();
    }
}

class CalculatorFrame extends Frame {
    CalculatorFrame() {
        this.setName("简单计算器窗口");
        this.setLayout(new GridLayout(2, 1, 20, 20));
        //实现样式一、
        Panel north = new Panel();
        Panel south = new Panel();
        this.add(north, new GridLayout(1, 1));
        this.add(south, new GridLayout(2, 1));
        north.setBackground(new Color(99, 255, 240));
        //实现样式二、
        north.setLayout(new GridLayout(1, 5, 5, 5));

        TextField north1 = new TextField();
        Label north2 = new Label(" + ");
        TextField north3 = new TextField();
        Label north4 = new Label(" = ");
        TextField north5 = new TextField();
        north.add(north1, new GridLayout(1, 1));
        north.add(north2, new GridLayout(1, 2));
        north.add(north3, new GridLayout(1, 3));
        north.add(north4, new GridLayout(1, 4));
        north.add(north5, new GridLayout(1, 5));


        south.setLayout(new GridLayout(1, 3, 5, 5));
        Panel south1 = new Panel();
        Button south2 = new Button("confrim");
        Panel south3 = new Panel();
        south.add(south1, new GridLayout(1, 1));
        south.add(south2, new GridLayout(1, 2));
        south.add(south3, new GridLayout(1, 3));
        //实现功能
        south2.addActionListener(new MyCalculatorActionListener(north1, north3, north5));
        //location size color
        this.setLocation(100, 100);
        this.setSize(400, 400);

        this.setVisible(true);
        new MySystemExit(this);
    }
}

class MyCalculatorActionListener implements ActionListener {
    TextField x, y, z;

    MyCalculatorActionListener(TextFielxd x, TextField y, TextField z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        z.setText(Double.valueOf(x.getText()) + Double.valueOf(y.getText()) + "");
        x.setText("");
        y.setText("");
    }
}

效果演示:

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

三、使用类的组合实现计算器

在Java的面向对象OPP 思想中,组合的优先级大于继承

什么是组合?

1.继承

class A extends B{
}

组合

calss A {
B b = null;
};

1.思路

1.完成一个一中的框架,不实现功能,但是把类的属性和方法分离
2.在自制的ActionLinstener 中创建class 类组合实现法计算器的对象 frameObj,通过构造函数传入参数给farmeObj赋值,
3.利用frameObj 获取 north1,north3 的值并转化后相加 在赋给 north5。最后north1 north3 重置。

2.代码

package GUI.简单计算器;

import GUI.MyClass.MySystemExit;

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

public class 类组合实现法计算器 extends Frame {
    Panel north;
    Panel south;
    //二、north
    TextField north1;
    Label north2;
    TextField north3;
    Label north4;
    TextField north5;
    //south
    Panel south1;
    Button south2;
    Panel south3;

    void loadFrame() {
        this.setName("简单计算器窗口");
        this.setLayout(new GridLayout(2, 1, 20, 20));
        //实现样式一、
        north = new Panel();
        south = new Panel();
        this.add(north, new GridLayout(1, 1));
        this.add(south, new GridLayout(2, 1));
        north.setBackground(new Color(255, 255, 255));
        //实现样式二、
        north.setLayout(new GridLayout(1, 5, 5, 5));

        north1 = new TextField();
        north2 = new Label(" + ");
        north3 = new TextField();
        north4 = new Label(" = ");
        north5 = new TextField();
        north.add(north1, new GridLayout(1, 1));
        north.add(north2, new GridLayout(1, 2));
        north.add(north3, new GridLayout(1, 3));
        north.add(north4, new GridLayout(1, 4));
        north.add(north5, new GridLayout(1, 5));


        south.setLayout(new GridLayout(1, 3, 5, 5));
        south1 = new Panel();
        south2 = new Button("confrim");
        south3 = new Panel();
        south.add(south1, new GridLayout(1, 1));
        south.add(south2, new GridLayout(1, 2));
        south.add(south3, new GridLayout(1, 3));
        //实现功能
        south2.addActionListener(new My类组合实现法计算器ActionListener(this));
        //location size color
        this.setLocation(100, 100);
        this.setSize(400, 100);
        this.setVisible(true);
        new MySystemExit(this);
    }

    public static void main(String[] args) {
        new 类组合实现法计算器().loadFrame();
    }
}

class My类组合实现法计算器ActionListener implements ActionListener {
    //获取窗体对象
    类组合实现法计算器 frameObj = null;

    My类组合实现法计算器ActionListener(类组合实现法计算器 frameObj) {
        this.frameObj = frameObj;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        frameObj.north5.setText(Double.valueOf(frameObj.north1.getText()) +
                Double.valueOf(frameObj.north3.getText()) + "");
        frameObj.north1.setText("");
        frameObj.north3.setText("");

    }
}

发布了56 篇原创文章 · 获赞 2 · 访问量 471

猜你喜欢

转载自blog.csdn.net/jarvan5/article/details/105603076