lesson9 简易计算器-2 面向对象的属性和方法写法

发布时间 2023-10-07 15:44:41作者: viking97816

 

package com.zym.lesson9;

import javax.swing.*;
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 TestCalc2 {
    public static void main(String[] args) {
       //调用loadFrame方法
        new MCalculator().LoadFrame();
    }

}


//计算器类
class MCalculator extends JFrame {

    //属性
    TextField num1,num2,num3;

    //方法
    public void LoadFrame(){
         //三个文本框
         num1 = new TextField(10);
         num2 = new TextField(10);
         num3 = new TextField(20);

         //一个按钮
         Button button = new Button("=");

         //对按钮添加一个事件,把自己 这个对象扔进去
         button.addActionListener(new MyCalculatorListener1(this));

         //一个标签
         Label label = new Label("+");

         //流式布局
         setLayout(new FlowLayout());
         //添加组件
         add(num1);
         add(label);
         add(num2);
         add(button);
         add(num3);

         //自适应大小
         pack();
         //设置可见
         setVisible(true);

         addWindowListener(new WindowAdapter() {
                               //窗体关闭时做的事
                               @Override
                               public void windowClosing(WindowEvent e) {
                                   // super.windowClosed(e);
                                   System.exit(0);
                               }
                           }
         );

     }

    //构造器
    public MCalculator() {


    }
}



//监听器类
class MyCalculatorListener1 implements ActionListener {



    //获取计算器对象,在一个类中,组合另外一个类
    MCalculator mCalculator=null;


    //以参数的形式传递进来
    public MyCalculatorListener1( MCalculator mCalculator){
        this.mCalculator=mCalculator;


    }



    @Override
    public void actionPerformed(ActionEvent e) {
        // 1获得加数与被加数
        // 通过操作对象的属性
       int n1=Integer.parseInt(mCalculator.num1.getText());
       int n2=Integer.parseInt(mCalculator.num2.getText());


        // 2  将这个值加法运行后,放到第三个框中
    
        mCalculator.num3.setText(""+(n1+n2));

        // 3 清除前两个框 
 
        mCalculator.num1.setText("");
        mCalculator.num2.setText("");

    }
}