/*
时间:2015年3月18日10:42:42
目的:理解java中文本框类的方法和事件处理
在java中,TextFiled类用来表示文本框
这个类有如下的方法:
构造方法:
TextFiled();构造新文本字段
TextField(int columns);构造具有指定列数的新文本字段
TextField(String text);构造使用指定文本初始化的新文本字段
TextField(String text, int columns); 构造使用要显示的指定文本初始化的新文本字段,宽度足够容纳指定列数
普通方法:
int getColumns()
获取此文本字段中的列数
char getEchoChar()
获取用于回显的字符。
void setColumns(int columns)
设置此文本字段中的列数。
void setEchoChar(char c)
设置此文本字段的回显字符。
void setText(String t)
将此文本组件显示的文本设置为指定文本。
ActionEvent的父类中有getSource()方法,该方法声明如下:
getSource
public Object getSource()最初发生 Event 的对象。
在程序的理解中,需要理解十分重要的一点就是,为什么在Monitor的actionPerformed中可以接收到在MyFrame类中定义的TextField类所包含的文本。这是因为
触发事件之后产生的事件对象ActionEvent包含了该事件的各种信息。通过getSource();返回了触发此事件的最初的对象。相应的其中的公开的成员变量也就可以被我们访问了。
*/
import java.awt.*;
import java.awt.event.*;
public class TestFieldActionEvent {
public static void main(String[] args) {
new MyFrame("TestFieldActionEvent!");
}
}
class MyFrame extends Frame {
public MyFrame(String title) {
super(title);
TextField tf = new TextField();
tf.addActionListener(new Monitor());
add(tf);
pack();
this.setVisible(true);
}
}
class Monitor implements ActionListener {
public void actionPerformed(ActionEvent e) {
TextField tf = (TextField)e.getSource();
System.out.println(tf.getText());
tf.setText(null);
}
}