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)的和转换成字符串 */ } }