import java.awt.*;
import java.awt.event.*;
public class TestMath {
public static void main(String args[]) {
new MyFrame().launchMyFrame(); //调用launchMyFrame方法
}
}
class MyFrame extends Frame {
TextField num1,num2,num3; //先声明,后初始化。先声明为成员变量,可以被访问
public void launchMyFrame() {
num1 = new TextField(10); //若在此声明和初始化,则为局部变量,不可被其他对象访问
num2 = new TextField(10); //加上数字10表示设置文本框宽度(10个字符宽)
num3 = new TextField(15); //num3文本框来放最后的和(所以大一点)
Label lb = new Label("+"); //加号是静态的文本,所以用Label
Button b = new Button("="); //等于按钮,可以触发事件(求和事件)
b.addActionListener(new myMonitor(this)); //给按钮b加上监听器
setLayout(new FlowLayout()); //Panel类的布局管理器
add(num1); //将文本框加到框架(窗体)中
add(lb);
add(num2); //这几个加入窗体中,是有顺序之分(按照实际要实现排列)
add(b);
add(num3);
pack(); //设置窗体大小(刚好包住所有输入框的大小)
setVisible(true); //设置窗体可见
}
//方法3:使用内部类(可以实现一个类访问其他类的成员变量)
/*
class myMonitor implements ActionListener { //事件监听器(点击按钮,触发的事件)
public void actionPerformed(ActionEvent e) { //事件监听器都需要重写里面的方法
int n1 = Integer.parseInt(num1.getText()); //int类型强制转化(获取num1文本框输入的内容)
int n2 = Integer.parseInt(num2.getText());
num3.setText("" + (n1+n2)); //设置num3文本框的内容(""表示强制转化字符串)
}
}
但是上面的添加监听事件代码,需要稍作改动:
b.addActionListener(new myMonitor()); //给按钮b加上监听器
*/
}
class myMonitor implements ActionListener { //事件监听器(点击按钮,触发的事件)
MyFrame tf = null; //一个类不能直接访问其他类成员变量
public myMonitor(MyFrame tf) { //在该对象中持有对方的引用(整个类的引用)
this.tf = tf;
}
/*这一段等效上面持有对方的引用(实现了一个类访问另一个类中的成员变量)
TextField 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) {
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
num3.setText("" + (n1+n2));
}
但是上面的添加监听事件代码,需要稍作改动:
b.addActionListener(new myMonitor(num1,num2,num3)); //给按钮b加上监听器
*/
public void actionPerformed(ActionEvent e) { //事件监听器都需要重写里面的方法
int n1 = Integer.parseInt(tf.num1.getText()); //int类型强制转化(获取num1文本框输入的内容)
int n2 = Integer.parseInt(tf.num2.getText());
tf.num3.setText("" + (n1+n2)); //设置num3文本框的内容(""表示强制转化字符串)
}
}