Java学习基础-GUI编程 一、使用TextFile实现简单的计算器

package cn.javastudy.summary;

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

public class TestMath {
    public static void main(String args[]) {
        new TFFrame();
    }
}

/* 这里主要是完成计算器元素的布局 */
class TFFrame extends Frame {
    TFFrame() {
        /*
         * 创建3个文本框,并指定其初始大小分别为10个字符和15个字符的大小 这里使用的是TextField类的另外一种构造方法 public TextField(int columns)
         */
        TextField num1 = new TextField(10);
        TextField num2 = new TextField(10);
        TextField num3 = new TextField(15);
        /* 创建等号按钮 */
        Button btnEqual = new Button("=");
        btnEqual.addActionListener(new MyMonitor(num1, num2, num3));
        /* 给等号按钮加上监听,让点击按钮后有响应事件发生 */
        Label lblPlus = new Label("+");
        /* “+”是一个静态文本,所以使用Label类创建一个静态文本对象 */
        setLayout(new FlowLayout());
        /* 把Frame默认的BorderLayout布局改成FlowLayout布局 */
        add(num1);
        add(lblPlus);
        add(num2);
        add(btnEqual);
        add(num3);
        pack();
        setVisible(true);

    }
}

class MyMonitor implements ActionListener {
    TextField num1, num2, num3;

    /*
     * 为了使对按钮的监听能够对文本框也起作用, 
     * 所以在自定义类MyMonitor里面定义三个TextField类型的对象 num1,num2,num3,
     * 并且定义了MyMonitor类的一个构造方法 这个构造方法带有三个TextField类型的参数,
     * 用于接收 从TFFrame类里面传递过来的三个TextField类型的参数 
     * 然后把接收到的三个TextField类型的参数赋值给在本类中声明的 三个TextField类型的参数num1,num2,num3 然后再在actionPerformed()方法里面处理num1,num2,num3
     */
    public MyMonitor(TextField num1, TextField num2, TextField num3) {
        this.num1 = num1;
        this.num2 = num2;
        this.num3 = num3;
    }

    public void actionPerformed(ActionEvent e) {
        /* 事件的相关信息都封装在了对象e里面,通过对象e的相关方法就可以获取事件的相关信息 */
        int n1 = Integer.parseInt(num1.getText());/* num1对象调用getText()方法取得自己显示的文本字符串 */
        int n2 = Integer.parseInt(num2.getText());/* num2对象调用getText()方法取得自己显示的文本字符串 */
        num3.setText("" + (n1 + n2));/* num3对象调用setText()方法设置自己的显示文本 */
        num1.setText("");
        /* 计算结束后清空num1,num2文本框里面的内容 */
        num2.setText("");
        // num3.setText(String.valueOf((n1+n2)));
        /* 字符串与任意类型的数据使用“+”连接时得到的一定是字符串,
         * 这里使用一个空字符串与int类型的数连接,这样就可以直接把(n1+n2)得到的int类型的数隐式地转换成字符串了,
         * 这是一种把别的基础数据类型转换成字符串的一个小技巧。
         * 也可以使用“String.valueOf((n1+n2))”把(n1+n2)的和转换成字符串 
         */
    }
}