1107
事件模型2
范例 名称:Java事件处理举例
源文件名称:TestActionEvent2.java
要 点:
1.一个事件源组件上可以同时注册多个监听器
2.一个监听器对象可以同时注册到多个事件源组件上
3.事件源的信息可以随它所触发的事件自动传递到所有注册过的监听器
import
java.awt.*;
import
java.awt.event.*;
public class
TestActionEvent2 {
public static void main(String args[]) {
Frame. f = new Frame("Test");
Button b1 = new Button("Start");
Button b2 = new Button("Stop");
Monitor2 bh = new Monitor2();
b1.addActionListener(bh);
b2.addActionListener(bh);//一个监听器监听了两个按钮
b2.setActionCommand("game over");
f.add(b1,"North");
f.add(b2,"Center");
f.pack();
f.setVisible(true);
}
}
class Monitor2 implements
ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("a button has been pressed," +
"the relative info is:\n " + e.getActionCommand());
}
}
Button类的方法public void setActionCommand(String command)设置此按钮激发的动作事件的命令名称。在默认情况下,此动作命令设置为与按钮标签相匹配。
Button类的方法publicStringgetActionCommand()返回此按钮激发的动作事件的命令名称(与setActionCommand对应)。如果命令名称为null(默认),则此方法返回按钮的标签。
1108
TextFiled类
Java.awt.TextFiled类用来创建文本框对象
例子:
import
java.awt.*;
import
java.awt.event.*;
public class TFActionEvent
{
public static void main(String[] args) {
new TFFrame();
}
}
class TFFrame. extends
Frame{
TFFrame( ){//构造方法
TextField tf = new TextField( );
add(tf);//将tf添加到TFFrame
tf.addActionListener(new TFActionListener( ));
pack( );
setVisible(true);
}
}
class TFActionListener
implements ActionListener{
public void actionPerformed(ActionEvent e){//读出对话框里的内容
TextField tf = (TextField)e.getSource();//强制转换为TextField
System.out.println(tf.getText());//拿到内容
tf.setText("");//读出后,再将tf设置为空
}
}
当某件事发生的时候,必须把此事封装成一个对象作为一个参数传递给监听器所实现接口里的特定方法。此例中当有输入时,它发出的这一件事叫ActionEvent e。所以可以在TFActionListener类中使用TFFrame类的局部变量tf。
ActionEvent的父类EventObject有方法publicObjectgetSource( )返回:最初发生Event的对象。注意其返回值是Object
javax.swing.text.JTextComponent类的方法publicStringgetText()返回此TextComponent中包含的文本
TextField类的方法public char getEchoChar( )获取用于回显的字符。*回显字符对于不应将用户输入回显到屏幕上的文本字段有用,例如输入密码的文本字段。例如tf.setEchoChar('*');将输入文本框tf的东西均显示为*
TextField类的方法public void setText(String t)将此文本组件显示的文本设置为指定文本。