/*
时间:2015年3月18日21:26:04
目的:测试TextField事件监听
持有对方引用。
内部类可以非常方便的访问包装类。
内部类默认拥有外部类对象的引用。
TextField对象可能发生Action(光标在文本框内敲回车)。与该事件对应的事件是java.awt.event.ActionEvent
用来处理ActionEvent事件是实现了java.awt.event.ActionListener接口的类的对象。
ActionListener接口中定义了方法
public void actionPerformed(ActionEvent e);
实现该接口的类主要在该方法中添加处理该事件(Action)的语句
使用addActionListener(ActionListener l);方法为TextField对象注册一个
ActionListener对象,当TextField对象发生Action事件时,会生成一个ActionEvent
对象,该对象作为参数传递给ActionListener对象的actionPerformed方法在方法中可以获取该
该对象的信息,并做相应的处理。
*/
import java.awt.*;
import java.awt.event.*;
public class TestTextFieldActionListener {
public static void main(String[] args) {
new MyFrame().launch();
}
}
class MyFrame extends Frame {
TextField num1, num2, num3;
public void launch(){
/*
重新定义了num1,num2, num3,把成员变量覆盖了。
*/
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(15);
Label lab1 = new Label("+");
Button equButton = new Button("=");
equButton.addActionListener(new Monitor());
setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
add(num1);
add(lab1);
add(num2);
add(equButton);
add(num3);
pack();
setVisible(true);
}
private class Monitor implements ActionListener {
public void actionPerformed(ActionEvent e) {
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
// num3.setText(String.valueOf(n1+n2));
num3.setText("" + (n1+n2));
}
}
}